ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python DataFrame数据针对内容的索引操作总结

2021-08-11 11:01:12  阅读:254  来源: 互联网

标签:删除 Python 价税 sum tax DataFrame 索引 data


在平时学习和建模过程中,处理Excel文档是非常常见的工作,而Excel在Python眼中就是一个简单的datafram类型的数据

1、读取Excel文件的数据

1 import pandas as pd
2 import numpy as np
3 
4 # 函数read_excel用来读取Excel文档为dataframe类型,参数sheet_name可以是工作簿中工作表的索引(从0开始),也可以是工作表的名字
5 data = pd.read_excel("enterprise123_data.xlsx", sheet_name=1)      # 此处读取第二个工作表

函数read_excel返回的直接就是一个dataframe类型的数据

 

 2、对于内容的索引

首先看一下Excel表格内的内容

 

 此处我们想索引企业代号为E1的企业的价税合计所在列的数据,用dataframe数据的索隐函数loc来实现,实力操作如下:

price_tax_sum = data.loc[data['企业代号']=='E1', '价税合计']

选取的E1企业的价税合计数据存储在变量price_tax_sum中,price_tax_sum同时也是一个dataframe类型的数据

使用price_tax_sum中元素的值:

array = price_tax_sum.values          # 将元素中的值赋给变量array,array为一个一维数组

也可直接用dataframe类型的行列索引访问price_tax_sum中的每个元素,但一般都是对数据处理都是大批处理,因此转为数组然后用for循环处理比较方便

 

3、如何大批量对不同企业代号的企业数据进行选取呢?

这里要用到字符串的格式化,因为不同企业的企业代号均为字符串形式,不同在于E后面的数字不同

1 for i in range(1,124):
2     txt = "E{}"
3     price_tax_sum = data.loc[data['企业代号']==txt.format(i), '价税合计']

代码中txt.format(i)就表示将数据 i 填充到字符串txt中的{}内,这样每一轮for循环得到的price_tax_sum就是不同企业的价税合计数据,在循环体中即可对价税合计数据进行操作

字符串的格式化也可以支持多值索引,具体可自己CSDN,理解起来很简单

 

4、总结一下dataframe类型中我经常需要用到的使用操作

(1)删除dataframe中行和列的方法总结

删除具体列:删除工作表中“价税合计”整列元素:

data = data.drop('价税合计', axis=1)  # axis=1表示删除的是列元素,函数参数为列索引名

删除具体行:删除E1企业的所有行:

data = data.drop('E1')      # axis=0或者不写表示drop函数默认删除行元素,函数参数为行索引名

删除特定数值的行(最常用):删除发票状态为作废发票的行:

data = data[data['发票状态'] == '作废发票']

删除/保存包含某些字符、文字的行:

# 删除发票状态中包含“作废”两字的行
data = data[~data['发票状态'].str.contains('作废')]
# 保存发票信息中包含“有效”两字的行,区别在于不要"~"
data = data[data['发票状态'].str.contains('有效')]

(2)填充空值

# 删除存在空值的行
data = data.dropna()

# 删除存在空值的列
data = data.dropna(axis=1)

# 填充空值
data.fillna(3, inplace=True)        # inplace=True表示在原DataFrame上修改

# 结合一些计算出来的值进行填充
data.fillna(np.mean(data['价税合计']), inplace=True)

对某些单元格满足特定条件进行修改其值时,可利用for循环来批量处理

在每轮循环中用if判断是否满足条件,如满足则修改成特定值

(3)两大索隐函数loc和iloc的区别

loc——通过行标签索引行数据

iloc——通过行号(为数字)索引行数据

iloc是按照行数取值,而loc按着index名取值

(4)更改索引值

# 直接给行、列索引赋值进行更改
data.columns = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
data.index = ['a', 'c', 'd']

标签:删除,Python,价税,sum,tax,DataFrame,索引,data
来源: https://www.cnblogs.com/HiShallyi/p/15127249.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有