2021-04-01 python数据处理系统学习(十五)数据筛选
1、输入数据并查看相关性质
输入数据:
import pandas as pd
import numpy as np
import os
os.chdir(r'C:\Users\wangyu\Desktop\毕业论文')
data=pd.read_excel('最终data.xlsx',sheet_name=0)#表示读取第一个工作簿
查看前五行:
data.head()
Out[4]:
Unnamed: 0 信誉评级和违约记录 有效发票率 ... 企业进项每笔金额的方差 进项有效合作单位数量 销项有效合作单位数量
0 1 100 0.963986 ... 3.917948e+06 435 351
1 2 100 0.960703 ... 2.511614e+04 3623 1567
2 3 60 0.979779 ... 5.457243e+04 570 135
3 4 60 0.918609 ... 2.001187e+06 131 26
4 5 80 0.956643 ... 3.316620e+05 390 33
[5 rows x 12 columns]
查看后五行:
data.tail()
Out[5]:
Unnamed: 0 信誉评级和违约记录 有效发票率 ... 企业进项每笔金额的方差 进项有效合作单位数量 销项有效合作单位数量
118 119 40 0.988095 ... 1228.014103 17 14
119 120 40 0.676923 ... 2312.309145 16 6
120 121 40 0.902542 ... 25870.030698 11 116
121 122 40 0.897590 ... 2850.090806 21 64
122 123 40 0.529412 ... 0.000000 2 5
[5 rows x 12 columns]
查看每列名称:
data.columns
Out[6]:
Index(['Unnamed: 0', '信誉评级和违约记录', '有效发票率', '企业的盈利能力(年度平均利润)', '有效发票总量',
'进项有效发票总金额', '销项有效发票总金额', '企业销项每笔金额的方差', 'Unnamed: 8', '企业进项每笔金额的方差',
'进项有效合作单位数量', '销项有效合作单位数量'],
dtype='object')
查看类型:
data.dtypes
Out[7]:
Unnamed: 0 int64
信誉评级和违约记录 int64
有效发票率 float64
企业的盈利能力(年度平均利润) float64
有效发票总量 int64
进项有效发票总金额 float64
销项有效发票总金额 float64
企业销项每笔金额的方差 float64
Unnamed: 8 float64
企业进项每笔金额的方差 float64
进项有效合作单位数量 int64
销项有效合作单位数量 int64
dtype: object
查看维度:
data.ndim
Out[8]: 2
查看行列的数量:
data.shape
Out[9]: (123, 12)
查看元素数量的大小:
data.size
Out[10]: 1476
查看0~2行:
data[:3]
Out[11]:
Unnamed: 0 信誉评级和违约记录 有效发票率 ... 企业进项每笔金额的方差 进项有效合作单位数量 销项有效合作单位数量
0 1 100 0.963986 ... 3.917948e+06 435 351
1 2 100 0.960703 ... 2.511614e+04 3623 1567
2 3 60 0.979779 ... 5.457243e+04 570 135
[3 rows x 12 columns]
查看序列类型:
type(data.信誉评级和违约记录)
Out[16]: pandas.core.series.Series
type(data)
Out[12]: pandas.core.frame.DataFrame
专门选取某几个列:
data[['信誉评级和违约记录','有效发票率']]
Out[19]:
信誉评级和违约记录 有效发票率
0 100 0.963986
1 100 0.960703
2 60 0.979779
3 60 0.918609
4 80 0.956643
.. ... ...
118 40 0.988095
119 40 0.676923
120 40 0.902542
121 40 0.897590
122 40 0.529412
[123 rows x 2 columns]
先选列再选行
data[['信誉评级和违约记录','有效发票率']][:7]
Out[20]:
信誉评级和违约记录 有效发票率
0 100 0.963986
1 100 0.960703
2 60 0.979779
3 60 0.918609
4 80 0.956643
5 100 0.946566
6 100 0.973124
2、loc和iloc
2.1 loc
data.loc[A,B],A和B分别表示行和列的标签
loc方法很灵活,具体如下:
用loc读取指定的行、列
data.loc[:,'有效发票率']
Out[21]:
0 0.963986
1 0.960703
2 0.979779
3 0.918609
4 0.956643
118 0.988095
119 0.676923
120 0.902542
121 0.897590
122 0.529412
Name: 有效发票率, Length: 123, dtype: float64
读取多行:
data.loc[:,['有效发票率','企业进项每笔金额的方差']]
Out[22]:
有效发票率 企业进项每笔金额的方差
0 0.963986 3.917948e+06
1 0.960703 2.511614e+04
2 0.979779 5.457243e+04
3 0.918609 2.001187e+06
4 0.956643 3.316620e+05
.. ... ...
118 0.988095 1.228014e+03
119 0.676923 2.312309e+03
120 0.902542 2.587003e+04
121 0.897590 2.850091e+03
122 0.529412 0.000000e+00
[123 rows x 2 columns]
多行多列:
data.loc[0:2,['有效发票率','企业进项每笔金额的方差']]
Out[23]:
有效发票率 企业进项每笔金额的方差
0 0.963986 3.917948e+06
1 0.960703 2.511614e+04
2 0.979779 5.457243e+04
只取一行两列:
data.loc[6,['有效发票率','企业进项每笔金额的方差']]
Out[24]:
有效发票率 0.973124
企业进项每笔金额的方差 21981.264090
Name: 6, dtype: float64
只取指定两行:
data.loc[[6,8],['有效发票率','企业进项每笔金额的方差']]
Out[25]:
有效发票率 企业进项每笔金额的方差
6 0.973124 21981.264090
8 0.976468 22293.729954
loc函数还可以进行查找满足某些条件的数,例如下面查找评分大于90的企业编号以及这些企业的有效发票率:
data.loc[data['信誉评级和违约记录']==100,['Unnamed: 0','有效发票率']]
Out[28]:
Unnamed: 0 有效发票率
0 1 0.963986
1 2 0.960703
5 6 0.946566
6 7 0.973124
7 8 0.942899
8 9 0.976468
12 13 0.934293
14 15 0.939297
15 16 0.931413
16 17 0.934498
17 18 0.943703
18 19 0.931213
21 22 0.909836
23 24 0.951162
25 26 0.932819
26 27 0.958096
30 31 0.961921
41 42 0.911765
47 48 0.964016
53 54 0.927114
58 59 0.963306
63 64 0.934613
80 81 0.946512
83 84 0.902174
87 88 0.941368
88 89 0.962025
90 91 0.950980
2.2 iloc
读取想要的
data.iloc[:,[2,3]]
Out[29]:
有效发票率 企业的盈利能力(年度平均利润)
0 0.963986 -1.939309e+09
1 0.960703 4.638077e+08
2 0.979779 6.068909e+08
3 0.918609 1.891956e+09
4 0.956643 5.958721e+06
.. ... ...
118 0.988095 -2.129928e+05
119 0.676923 1.769471e+05
120 0.902542 -1.136832e+06
121 0.897590 6.994340e+03
122 0.529412 2.267197e+05
[123 rows x 2 columns]
指定某一行的相关数据:
Out[30]:
有效发票总量 28055.00
进项有效发票总金额 52026978.69
Name: 2, dtype: float64
2.3 loc和iloc的区别
loc对标签进行操作,iloc对索引的数字进行操作
iloc不能条件索引