一、Pandas 简述
Pandas 是 Python 语言的一个扩展程序库,用于数据分析。它并不是熊猫胖达的复数,它的名字衍生自术语 "panel data"和 "Python data analysis"。Pandas 是一个强大的分析结构化数据的工具集,基础是Numpy(提供高性能的矩阵运算)。
Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
Pandas 里面隐藏了很多包,它是一个核心包,里面有很多其他包的功能。它相当于 Python 中 Excel,它使用表(也就是 dataframe),能在数据上做各种变换,但还有其他很多功能。
二、Pandas的基本使用
1. 导入pandas库
import pandas as pd
2. 读取数据
data = pd.read_csv( my_file.csv )
data = pd.read_csv( my_file.csv , encoding= utf-8 , nrows=1000, skiprows=[2,5])
nrows=1000 表示读取前 1000 行(row)数据。skiprows=[2,5] 表示你在读取文件的时候会移除(skip)第 2 行和第 5 行。
3. 写出数据
data.to_csv( my_new_file.csv , index=None)
index=None 表示将会以数据本来的样子写入。如果没有写 index=None,你会多出一个第一列,内容是 1,2,3,...,一直到最后一行。
4.查看数据和数据操作
给出行数和列数
Gives (#rows, #columns)
计算基本的统计数据
data.describe()
打印出数据的前 3 行。与之类似,data.tail(3) 对应的是数据的最后3行。
data.head(3)
打印出第八行
data.loc[8]
打印第八行名为「column_1」的列
data.loc[8, column_1 ]
第四到第六行(左闭右开)的数据子集
data.loc[range(4,6)]
将第八行名为 column_1 的列替换为「english」
data.loc[8, column_1 ] = english
三、Pandas 的数据处理的重要应用
1.检测缺失值
null_df = data.isnull().sum()
2.筛选数据
Pandas提供了查询 query()方法来过滤DataFrame。它提供了一种简单的选择方法, 并且还简化了基于索引的选择任务。pd.concat用于数据合并,合并筛选出的新数据,默认上下堆叠(默认axis=0),若参数axis=1,则设置为左右拼接。
new_data_1 = data.query('age<=40 & charges<=10000') # 40岁以下 且 10000元以下
new_data_2 = data.query('age>40 & age<=50 & charges<=12500') # 40岁至50岁之间 且 12500元以下
new_data_3 = data.query('age>50 & charges<=17000') # 50岁以上 且 17000元以下
new_data = pd.concat([new_data_1, new_data_2, new_data_3], axis=0)
3.得到自变量和因变量
.iloc[],即index locate ,.iloc 是根据行数与列数来索引的,参数是整型,注意索引从0开始。中括号里面是先行后列,以逗号分割。注意此处区间前闭后开。
.loc[],中括号里面是先行后列,以逗号分割,行和列分别是行标签和列标签。.loc是用行列标签来进行选择数据的。
x = new_data.iloc[:, 0:1].values
y = new_data['charges'].values
四、Pandas 的一些函数
1.统计出现的次数
data[ column_1 ].value_counts()
2.在所有的行、列或者全数据上进行操作
.map() 运算给一列中的每一个元素应用一个函数
data[ column_1 ].map(len)
#len() 函数被应用在了「column_1」列中的每一个元素上
data[ column_1 ].map(len).map(lambda x: x/100).plot()
#在一行中执行多个操作(.map() 和.plot())
data.apply(sum)
#.apply() 会给一个列应用一个函数。
#.applymap() 会给表 (DataFrame) 中的所有单元应用一个函数。
五、tqdm
在处理大规模数据集时,pandas 会花费一些时间来进行.map()、.apply()、.applymap() 等操作。tqdm 是一个可以用来帮助预测这些操作的执行何时完成的包.
from tqdm import tqdm_notebook
tqdm_notebook().pandas()
用 pandas 设置 tqdm
data[ column_1 ].progress_map(lambda x: x.count( e ))