一、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 ))