dataframe索引设置
2.3.1 修改行列索引值
data.index = stu
2.3.2 重设索引
df.reset_index() # 默认把索引的值变成一列数据,索引恢复默认索引
drop=True,删掉索引
2.3.3 以某列值设置为新的索引
df.set_index(‘列名’)
df.set_index([‘列名’, ‘列名1’])
year month sale
2012 1 1
2 67
3 89
4 67
5 67
2013 1
2
3
4
5
2014 1
2
3
4
5
dataframe切片索引
只能按照列名去切片
.loc[行索引的名字 , 列索引的名字]
.iloc[行位置下标,列位置下标]
.ix[] # 名字 位置下标 不建议使用
index
10
a
11
100
first
0
.ix[0:10 ,]
3 排序
.sort_values()
dataframe对象有 by= 指定按照哪列进行排序
.sort_index(ascending=True)
1 算术运算
+/-/*/ div
data[‘open’] + data[‘close’] # 按照index对应的进行运算
2 逻辑运算
data[“open”] > 23 # bool_series
data[bool_series]
data.query(“open<24 & open>23”)
.isin([‘志宏’, ‘火箭’]) # 产生bool_series
3 统计运算
df.describe()
max min mean
median 中位数 --> 由小到大排列之后中间两数的平均值
mode 众数 --> 出现次数最多的数
.idxmax .idxmin # 返回最大值/最小值的index名字索引
3.3 累计统计函数
02-24 这天的价格当作基准价格
4 自定义运算
df.apply(func, axis=0)
5.6 文件读取与存储
CSV(text)
pd.read_csv(filename)
df.to_csv(filename)
df.to_csv('test.csv')
HDF5(binary)
pd.read_hdf(filename)
df.to_hdf(filename, key='') # 一个h5文件中可以存储多张表
JSON(text)
pd.read_json(filename, orient=‘records’, lines=False)
df.to_json(filename, orient='')
5.7 高级处理-缺失值处理
缺失值
NaN : not a number
标准的缺失值标记符,np.nan np.NaN
type: float
np.nan == np.nan # False
1 如何处理nan
判断是否有缺失值
pd.isnull(df) # nan:True 从false找True, np.any
pd.notnull(df) # nan: False, 从True找False, np.all
处理缺失值
删掉:
df.dropna(inplace=True)
填充缺失值
df[''].fillna(value)
2 缺失值非nan时,需要做替换
df.replace(to_replace=, value=, inplace=True)
5.8 高级处理-数据离散化
1.什么是数据的离散化
连续性的数据,变成离散型的数据
42
150~165, 165~180,180~195
矮、中、高
2.为什么要离散化
数据离散化技术可以用来减少给定连续属性值的个数
3.离散化的pandas实现
pd.qcut(data[’’], 10) # 等频分割,等频分箱
pd.cut(data[''], [-11, 0, 5, 12]) # 按照指定间距分割
pd.cut(data[''], 10) # 等距分割
one-hot编码
pandas 哑变量,热编码
pd.get_dummies(data, prefix='')
5.9 高级处理-合并
pd.concat([df1, df2], axis=1) # 按照行列索引进行拼接
pd.merge(left, right, on=[’’], how=‘inner/outer/left/right’)
5.10 高级处理-交叉表与透视表
考察两列离散型数据之间的关系
考察两列连续型数据之间的关系:散点图
交叉表
数数字,数两列数据某对儿值共同出现的次数
pd.crosstab(tf[’’], tf[’’])
透视表
df.pivot_table([’’], index=[’’])
5.11 高级处理-分组与聚合
分别采用DataFrame 或者 Seriers 对其进行操作
df.groupby([‘col’]).mean()[’’]
df.groupby([‘col’, ‘col2’]).mean()[’’]
col.groupby([‘color’])[‘price1’].mean()
col[‘price1’].groupby(col[‘color’]).mean()
注意:知道两者之间的差异,Seriers 是先指定按照什么分组我们的数据
pandas中,抛开聚合谈分组,无意义