1.pandas是什么 为什么用?
2008年WesMcKinney开发出的库
专门用于数据挖掘的开源Python库
以Numpy为基础 借力Numpy模块在计算方面性能高的优势
基于matplotlib 能够简便的画图
独特的数据结构
为什么用
数据处理能力强
读取文件方便
封装了Matplotlib、Numpy的画图和计算
核心数据结构
Dataframe
结构 有行索引 列索引的二维数组 想获取某个数据时更简单
属性 shape index colums values 直接获取其中array的值 T
方法 head tail 返回前几行 返回后几行
#添加行索引
y [ 行索引{} .format(i) for i in range(7)]
#添加列索引
x [ 列索引{} .format(i) for i in range(9)]
pd.Dataframe(data,index y,columns x)
设置索引
# 修改行列索引值
# data.index[2] 新索引88 不能单独修改索引
stock_ [ 新索引{} .format(i) for i in range(10)]
data.index stock_
# 重设索引
data.reset_index(drop False) # drop True把之前的索引删除
# 设置新索引
df pd.Dataframe({ month : [1, 4, 7, 10],
year : [2012, 2014, 2013, 2014],
sale :[55, 40, 84, 31]})
# 以月份设置新的索引
df.set_index( month , drop True)
# 设置多个索引 以年和月份
new_df df.set_index([ year , month ])
Pannel
MultiIndex
多级或分层索引对象
index属性 names: levels的名称 levels: 每个level的元组值
Series
带索引的一维数组
属性 index values
# 创建
pd.Series(np.arange(3, 9, 2), index [ a , b , c ])
# 或用字典区创建
pd.Series({ red :100, blue :200, green : 500, yellow :1000})
sr data.iloc[1, :]
sr.index # 索引
基本操作
索引操作
data pd.read_csv( 路径名 .csv文件 ) #读取数据 data data.drop([ 不要的列1 , 不要的列2 , 不要的列3 , 不要的列4 ], axis 1) # 去掉一些不要的列 data[ 第一列 ][ 第一行 ] # 直接索引 先列后行 data.loc[ 第一行 ][ 第一列 ] # 按名字索引 data.loc[ 第一行 , 第一列 ] data.iloc[1, 0] # 数字索引 # 组合索引 # 获取 [ 第一列 , 第二列 , 第三列 , 第四列 ]这个四个指标的结果 data.iloc[:4, [ 第一列 , 第二列 , 第三列 , 第四列 ]] # 不能用了 data.loc[data.index[0:4], [ 第一列 , 第二列 , 第三列 , 第四列 ]]] data.iloc[0:4, data.columns.get_indexer([ 第一列 , 第二列 , 第三列 , 第四列 ])]
赋值操作
data.open 100 data.iloc[1, 0] 222
排序操作 1.对内容进行排序
使用df.sort_values(key [“关键字1”,“关键字2”],ascending )对内容进行排序
单个键或者多个键进行排序 默认升序
ascending False:降序 True:升序
对索引进行排序
data.sort_index()Dataframe运算
算数运算
data[ 第一列 ].add(3).head() # 第一列统一加3 data[ 第一列 ] 3 data.sub(100).head() # 所有统一减100 data - 100 data[ 第二列 ].sub(data[ 第一列 ]).head() # 第二列减第一列
逻辑运算
、 、| 、
逻辑运算函数
query()
isin(关键字)
统计运算
describe()
画图
Dataframe.plot(x None, y None, kind ‘line’)
x: label or position
y: label, position or list of label, positions
kind: 图的类型
‘line’、 bar 、“barh”、“hist”“pie”、“scatter”
文件的读取和存储
读取CSV文件
pd.read_csv( path , usecols [ 第一列 , 第二列 , 第三列 , 第四列 ]).head() # 读哪些列 data pd.read_csv( 文件名 , names [ 第一列 , 第二列 , 第三列 , 第四列 ]) # 如果列没有列名 用names传入 data[:10].to_csv( test.csv , columns [ 第一列 ]) # 保存open列数据 data[:10].to_csv( test.csv , columns [ 第一列 ], index False, mode a , header False) # 保存第一列数据 index False不要行索引 mode a 追加模式|mode w 重写 header False不要列索引
读取HDF5文件
HDF5文件的读取和存储需要指定一个键 值为要存储的Dataframe
read_hdf()
pandas.read_hdf(path_or_buf, key None, **kwargs)
path_or_buffer: 文件路径
key: 读取的键
mode: 打开文件的模式
reurn: The Selected object
从h5文件当中读取数据
to_hdf()
Dataframe.to_hdf(path_or_buf, key, **kwargs)
day_close pd.read_hdf( ./stock_data/day/day_close.h5 ) day_close.to_hdf( test.h5 , key close )
读取JSON文件
read_json()
pandas.read_json(path_or_buf None,orient None,typ “frame”,lines False)
将JSON格式转换成默认的Pandas Dataframe格式
orient: string,Indication of expected JSON string format.
‘split’: dict like {index - [index], columns - [columns], data - [values]}
‘records’: list like [{column - value}, …, {column - value}]
‘index’: dict like {index - {column - value}}
‘columns’: dict like {column - {index - value}}, 默认该格式
‘values’: just the values array
lines: boolean, default False
按照每行读取json对象
typ: default ‘frame’ 指定转换成的对象类型series或者dataframe
sa pd.read_json( Sarcasm_Headlines_Dataset.json , orient records , lines True) sa.to_json( test.json , orient records , lines True)缺失值处理
**如何 处理缺失值** 1、删除含有缺失值的样本 2、替换/插补数据
如何处理NaN?
判断是否有NaN
pd.isnull(df) 或者 pd.notnull(df)
删除含有缺失值的样本
df.dropna(inplace True) 默认按行删除 inplace:True修改原数据 False返回新数据 默认False
替换/插补数据
df.fillna(value,inplace True) value替换的值 inplace:True修改原数据 False返回新数据 默认False
import pandas as pd import numpy as np movie pd.read_csv( C:/virtual/IMDB-Movie-Data.csv ) # 1 判断是否存在NaN类型的缺失值 np.any(pd.isnull(movie)) # 返回True 说明数据中存在缺失值 #np.all(pd.notnull(movie)) # 返回False 说明数据中存在缺失值
import pandas as pd import numpy as np movie pd.read_csv( C:/virtual/IMDB-Movie-Data.csv ) # 1 判断是否存在NaN类型的缺失值 pd.isnull(movie) #pd.isnull(movie).any() #加了.any,返回某个字段是否有缺失值 # pd.notnull(movie).all()



