数据科学(五)
索引
行列索引
index columns
tag = [‘a’] + [‘b’] + [‘c’]
x[‘Tag’] = tag
y = x[x.Tag.isin([‘a’,‘b’])]
重新索引reindex
df.reindex(index=dates[0:4],columns=list(df.columns) + [‘e’])
多级索引MutiIndex
可以用二维的数据表达更高维度的数据
用处:在分析股票数据,一级行索引可以是日期;二级行索引可以是股票代码,列索引可以是股票的交易量,开盘价,收盘价等等。这样就可以把多个股票放在同一个时间维度下进行考察和分析。
索引交换及排序
- 交换
df.swaplevel(‘索引1’,‘索引2’) - 排序
df.sort_index(0) 一级索引排序
df.sort_index(1) 二级索引排序
按照索引级别进行统计
索引转换
索引与列转换
df.set_index 设置多级索引
df.reset_index() 设置成平面的索引
索引间转
-
stack()
stacked = df.stack() -
unstack()
转换回来
reversestacked = stacked.unstack()
在行索引有两层列索引有一层时,将行索引二层索引转换为列索引
reversestacked = stacked.unstack().unstack()
数据透视 pivot_table
- 不存在值——NaN
- 多个值——求平均值
pd.pivot_table(df, values=‘D’, index=[‘A’, ‘B’], columns=[‘C’])
行索引为AB 列索引为C
时间序列
创建
date_range
rng = pd.date_range(‘20200210’, periods=600, freq=‘s’)
period_range
季度为单位
prng = pd.period_range(‘1990Q1’, ‘2000Q4’, freq=‘Q-NOV’)
转换成时间日期
prng.to_timestamp()
运算
-
减
deltime=pd.Timestamp(‘20200110’)-pd.Timestamp(‘20200210’) -
加
sumtime = pd.Timestamp(‘20200210’)+pd.Timedelta(days=5)
类别数据category
添加categories数据
df[“grade”] = df[“raw_grade”].astype(“category”)
查看类别
df.grade.cat.categories
重命名
rename = df[“grade”].cat.categories = [“11”, “22”, “33”]
排序
-
升序
sortct=df.sort_values(by=‘grade’, ascending=True) -
降序
sortct=df.sort_values(by=‘grade’, ascending=False)
数据可视化
表格.plot()
数据读写csv
- 读
表格.to_csv(‘data.csv’) - 写
pd.read_csv(‘data.csv’, index_col=0)
代码
索引专题
import pandas as pd
import numpy as np
##行列索引
s = pd.Series(np.random.rand(5), index=list('abcde'))
print('行列索引')
print(s)
print(s.index)
s.index.name = 'alpha'
print(s)
df = pd.DataFrame(np.random.randn(4, 3), columns=['one', 'two', 'three'])
print(df)
print(df.index)
print(df.columns)
##多层索引
#### Series 多层索引
print('Series 多层索引')
a = [['a', 'a', 'a', 'b', 'b', 'c', 'c'], [1, 2, 3, 1, 2, 2, 3]]
tuples = list(zip(*a))
print(tuples)
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
print(index)
s = pd.Series(np.random.randn(7), index=index)
print(s)
print(s.index)
print(s.index.levels[0])
print(s.index.levels[1])
print(s['b'])
print(s['b':'c'])
print(s[['b', 'a']])
pri