1.pandas数据结构
Series:一维数据(只有行索引),类似字典,如果没有key,则自己创建索引
DateFrame:二维数据
DateFrame
pd.DataFrame(data, index=***, columns=***) # 添加行(index)索引,列(columns)索引
# 生成一个时间的序列,略过周末非交易日
date = pd.date_range('2017-01-01', periods=天数, freq='B') # 'B'默认略过周末
df = df.set_index(['month']) # 设置索引
Series
pd.Series(np.arange(10))
pd.Series({'red':100, ''blue':200, 'green': 500, 'yellow':1000})
2.基本数据数据
1.读文件
pd.read_csv()
data.to_csv("./test.csv", columns=['open'], index=False, mode='a', header=False) # mode:'w':重写, 'a' 追加;index:是否写进行索引
2.索引操作
# loc:只能指定行列索引的名字
data.loc['2018-02-27':'2018-02-22', 'open']
# 使用iloc可以通过索引的下标去获取
data.iloc[0:100, 0:2].head()
# 使用ix进行下表和名称组合做引
data.ix[0:10, ['open', 'close']]
# 先列后行
data[['close', 'open', 'high']][0:3]
3.排序
data = data.sort_values(by=['open', 'high'], ascending=False) # False为从大到小
4.统计分析
data.describe()
data.sort_index()
data.idxmin() # 最小值索引
data.idxmax # 最大值索引
5.逻辑与算数运算
data[data['p_change'] > 2]
data[(data['p_change'] > 2) & (data['open'] > 15)]
data[data['turnover'].isin([4.19])]
data['open'].add(1)
data['m_price_change'] = close.sub(open1) # close+open1
6.缺失值处理
判断是否有nan值
data.isnull() # 所有
data.isnull().any() # 每列
data[data.isnull().values==True] # 显示有nan的行
删除
movie.dropna()
替换
movie['Metascore'].fillna(movie['Metascore'].mean(), inplace=True)
替换后删除
wis = wis.replace(to_replace='?', value=np.nan)
wis.dropna()
7.合并
pd.concat([data1, data2], axis=1) # 1代表行,0代表列
left表示左拼接
right表示右拼接
outer表示取并集
inner表示取交集
pd.merge(data1, data2, on=['key1', 'key2'], how='合并方式')
8.交叉表---one_hot编码
pd.crosstab(df['year'], df['sale'])
9.透视表
df.pivot_table(['year'], index=['sale'])
10.分组与聚合
col.groupby(['color'])['price1'].mean()