用pandas清洗数据具体步骤(基础篇二)
2018-01-31 15:07
239 查看
我们接着上一篇来做。我们可以先读取excel数据。然后进行以下操作:
例如rename更改索引名字要注意是行索引还是列索引?
reindex重新设定索引,则需要注意重新设定的索引是否能包含原有的索引?
列数据的互相计算比较方便。索引为了方便对数据进行处理。我需要进行行列转置。这里需要注意的有3个问题:
1.这里我要计算资产负债率的时候需要表现2位小数,而且后面的百分比显示也只能显示2位小数。所以这里需要使用format函数;
2.format以后显示的都是字符,如果要进行进一步的计算,需要把字符重新转换成数字;
3.我只需要查看年底也就是12月31日的数据。所以用loc抽取12月的数据进行处理。
行列转置;书籍类型转换;选取特定列索引
这里先做的是简单的资产组成分析。
货币资产:
流动资产:这里表示不包含货币现金的流动资产
长期资产:固定资产和无形资产
投资性资产:交易性金融资产和房地产投资和其他长期股权投资
长期资产+投资性资产=非流动资产
pandas里面只能把表格完全放到一个全新的xlsx的文件中去。而不能把表格放入到已经有sheet的文件中去。它会覆盖掉原来所有的数据。
我用的自己编写的一个模块modeify_excel_py3(1.可以在xlsx中新建sheet,并把数据存入新的sheet;2.可以直接用语句把已经存在的sheet打开并进行修改)。把数据存入某个已经的存在的xlsx文件中某个表。
选取数据和更改行索引和列索引
tt=pd.read_excel('d://new.xlsx') tt.columns=["m"+str(x).replace('/','') for x in tt.columns ] tt.index=tt.ix[:,0].values # 将第一列作为索引。不需要进行重新索引。但是不能出现空值。 tt=tt.iloc[:,1:] # 疏忽了,这里需要去掉第一列.因为我已经把这一列作为索引了python还有很多函数来更改行索引和列索引。但是有很多需要注意的地方
例如rename更改索引名字要注意是行索引还是列索引?
reindex重新设定索引,则需要注意重新设定的索引是否能包含原有的索引?
列数据的互相计算比较方便。索引为了方便对数据进行处理。我需要进行行列转置。这里需要注意的有3个问题:
1.这里我要计算资产负债率的时候需要表现2位小数,而且后面的百分比显示也只能显示2位小数。所以这里需要使用format函数;
2.format以后显示的都是字符,如果要进行进一步的计算,需要把字符重新转换成数字;
3.我只需要查看年底也就是12月31日的数据。所以用loc抽取12月的数据进行处理。
行列转置;书籍类型转换;选取特定列索引
tt=tt.T # 行列转换 tt=tt.applymap(lambda x:'{:.2f}'.format(x/10000)) # 将数字都变成以万为单位。但是format以后数字都会变成字符 print (tt.dtypes) # 可以查看各列的数据类型 tt=tt.apply(pd.to_numeric,errors='ignore') # 把其中数字样子的字符都变成数字。 tt['资产负债率']=tt['负债合计']/tt['资产总计'] sel_index=[x for x in tt.index if x[5:7]=='12'] # 抽取中其中12月份的数据 tt=tt.loc[sel_index] # 查看12月份的数据
这里先做的是简单的资产组成分析。
货币资产:
流动资产:这里表示不包含货币现金的流动资产
长期资产:固定资产和无形资产
投资性资产:交易性金融资产和房地产投资和其他长期股权投资
长期资产+投资性资产=非流动资产
简单数据计算
tt['货币资金占比']=tt['货币资金']/tt['资产总计'] tt['货币资金占比']=tt['货币资金占比'].apply(lambda x:'{:.2%}'.format(x)) tt['流动资产']=tt['流动资产合计']-tt['货币资金'] tt['流动资产占比']=tt['流动资产']/tt['资产总计'] tt['流动资产占比' 4000 ]=tt['流动资产占比'].apply(lambda x:'{:.2%}'.format(x)) tt['投资性资产']=tt['可供出售金融资产']+tt['长期股权投资']+tt['投资性房地产'] tt['投资性资产占比']=tt['投资性资产']/tt['资产总计'] tt['投资性资产占比']=tt['投资性资产占比'].apply(lambda x:'{:.2%}'.format(x)) tt['长期资产']=tt['非流动资产合计']-tt['投资性资产'] tt['长期资产占比']=tt['长期资产']/tt['资产总计'] tt['长期资产占比']=tt['长期资产占比'].apply(lambda x:'{:.2%}'.format(x)) tt_zc=tt[['货币资金','流动资产','投资性资产','长期资产','资产总计','货币资金占比','流动资产占比','投资性资产占比','长期资产占比']] print (tt_zc)最后把数据保存到特定的xlsx文件中去。
pandas里面只能把表格完全放到一个全新的xlsx的文件中去。而不能把表格放入到已经有sheet的文件中去。它会覆盖掉原来所有的数据。
我用的自己编写的一个模块modeify_excel_py3(1.可以在xlsx中新建sheet,并把数据存入新的sheet;2.可以直接用语句把已经存在的sheet打开并进行修改)。把数据存入某个已经的存在的xlsx文件中某个表。
from excel import modify_excel_py3 as me a=me.modify_excel_cells(r'd:\\final\\000030.xlsx','zichan') a.insert_new_sheet(tt_zc)最后处理的结果如下:
相关文章推荐
- 用pandas清洗数据具体步骤(基础篇一)
- 大数据技术学习笔记之hive框架基础3-sqoop工具的使用及具体业务分析
- 机器学习基础与实践(一)----数据清洗
- pandas数据处理基础之筛选指定行或者指定列的数据
- pandas做数据的清洗
- pandas数据清洗,排序,索引设置,数据选取
- 利用pandas对数据进行基本清洗
- Pandas基础 -- 1. 数据结构 Series
- 利用Python进行数据分析(10) pandas基础: 处理缺失数据
- 数据分析:pandas 基础
- Python Pandas、Spark数据清洗
- [置顶] arcgis server10.2.2发布MXD地图基础服务的具体步骤
- 【Pandas-Cookbook】07:数据清洗
- C基础----Unix指令、程序步骤、关键字、数据
- pandas数据清洗,排序,索引设置,数据选取
- Pandas数据基础(索引、排序、连接、去重、分箱、异常处理)
- 小项目-数据处理篇:pandas进行工作相关数据清洗
- Python 数据分析包:pandas 基础
- 数据预处理(1) ——数据清洗 使用python(sklearn,pandas,numpy)实现
- 在Linux系统下移除文件内的隐私数据的方法和具体步骤