import pandas as pd
pandas 最基本的功能
data = pd.read_csv( my_file.csv )
data = pd.read_csv( my_file.csv , sep= ; , encoding= latin-1 , nrows=1000, skiprows=[2,5])
sep 代表的是分隔符。如果你在使用法语数据,excel 中 csv 分隔符是「;」,因此你需要显式地指定它。 编码设置为 latin-1 来读取法语字符。 nrows=1000 表示读取前 1000 行数据。skiprows=[2,5]表示你在读取文件的时候会移除第 2
行和第 5 行。
- 最常用的功能:read_csv, read_excel
- 其他一些很棒的功能:read_clipboard, read_sql
写数据
data.to_csv( my_new_file.csv , index=None)
index=None 表示将会以数据本来的样子写入。如果没有写 index=None,你会多出一个第一列,内容是 1,2,3,…,一直到最后一行。
我通常不会去使用其他的函数,像.to_excel, .to_json, .to_pickle 等等,因为.to_csv
就能很好地完成工作,并且 csv 是最常用的表格保存方式。
检查数据
Gives (#rows, #columns)
import pandas as pd
data=pd.read_csv('收入.csv',encoding='gbk')
print(data.shape)
C:\Users\giser\AppData\Local\Programs\Python\Python37\python.exe D:/pycharm/tjdc/TJSJ/DA.py
(3807, 25)
Process finished with exit code 0
data.describe()
import pandas as pd
data=pd.read_csv('收入.csv',encoding='gbk')
print(data.describe())
C:\Users\giser\AppData\Local\Programs\Python\Python37\python.exe D:/pycharm/tjdc/TJSJ/DA.py
行码\t 页码\t 指标编码\t
count 3807.000000 3807.000000 3807.000000
mean 6.885211 85.328343 226154.701077
std 4.429895 38.881591 23887.786072
min 1.000000 2.000000 121011.000000
25% 3.000000 100.000000 210131.000000
50% 6.000000 102.000000 240111.000000
75% 11.000000 104.000000 240412.000000
max 15.000000 117.000000 250311.000000
Process finished with exit code 0
查看数据
data.head(3) 打印出数据的前 3 行。与之类似,.tail() 对应的是数据的最后一行。
data.loc[8] 打印出第八行
data.loc[8, column_1 ] 打印第八行名为「column_1」的列
data.loc[range(4,6)] 第四到第六行(左闭右开)的数据子集
pandas 的基本函数
逻辑运算
#通过逻辑运算来取数据子集。要使用 & (AND)、 ~ (NOT) 和 | (OR),必须在逻辑运算前后加上「and」。*
data[data[ column_1 ]== french ]
data[(data[ column_1 ]== french ) & (data[ year_born ]==1990)]
data[(data[ column_1 ]== french ) & (data[ year_born ]==1990) & ~(data[ city ]== London )]
data[data[ column_1 ].isin([ french , english ])]
# 除了可以在同一列使用多个 OR,你还可以使用.isin() 函数。
基本绘图
matplotlib 包使得这项功能成为可能。正如我们在介绍中所说,它可以直接在 pandas 中使用。
data[ column_numerical ].plot()
data[ column_numerical ].hist()
更新数据
data.loc[8, column_1 ] = english
# 将第八行名为 column_1 的列替换为「english」
data.loc[data[ column_1 ]== french , column_1 ] = French
# 在一行代码中改变多列的值
中级函数
- 统计出现的次数
import pandas as pd
data=pd.read_csv('收入.csv',encoding='gbk')
print(data['name'].value_counts())
打零工收入\t 411
按月发放的工资、奖金、津补贴(含税、四金)\t 382
记账补贴\t 241
月工资\t 214
高龄老人补贴\t 120
210111\t 119
新农保养老\t 95
250261\t 87
240131\t 86
养老金(农保)\t 86
210131\t 86
240111\t 80
不按月发放的工资(含过节费、年终奖、高温费等)\t 75
退休工资\t 73
import pandas as pd
data=pd.read_csv('收入.csv',encoding='gbk')
# 在所有的行、列或者全数据上进行操作
print(data['name'].map(len))
#len() 函数被应用在了「column_1」列中的每一个元素上
# .map() 运算给一列中的每一个元素应用一个函数
data[ column_1 ].map(len).map(lambda x: x/100).plot()
pandas 的一个很好的功能就是链式方法(https://tomaugspurger.github.io/method-chaining)。它可以帮助你在一行中更加简单、高效地执行多个操作(.map() 和.plot())。
- 相关性和散射矩阵
data.corr()
data.corr().applymap(lambda x: int(x*100)/100)
行码\t 1.000000 0.357403 -0.010890
页码\t 0.357403 1.000000 0.087846
指标编码\t -0.010890 0.087846 1.000000
pd.plotting.scatter_matrix(data, figsize=(12,8))
pandas 中的高级操作
- The SQL 关联
data.merge(other_data, on=[ column_1 , column_2 , column_3 ])
- 分组
#一开始并不是那么简单,你首先需要掌握语法,然后你会发现你一直在使用这个功能。
data.groupby( column_1 )[ column_2 ].apply(sum).reset_index()
- 行迭代
dictionary = {
}
for i,row in data.iterrows():
dictionary[row[ column_1 ]] = row[ column_2 ]
转载:https://blog.csdn.net/wglink/article/details/108618786