# hanbb
# come on!!!
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(np.arange(12).reshape(3,4),index=['b','a','c'],columns=['2nd','1st','4or','3rd'])
print(df)
# 排序
# 根据行列排序
print(df.sort_index(axis=0,ascending=True)) # 默认是列索引,升序
print(df.sort_index(axis=1)) # 行索引
# 根据某行或者某列的值排序
print(df.sort_values('1st')) # 默认是列,升序列
print(df.sort_values('a',axis=1,ascending=False)) # 改为行,降序
# 求和
print(df.sum())
print(df.sum(axis=1))
# 累计求和
print(df.cumsum())
print(df.cumsum(axis=1))
# 数量
print(df.count())
print(df.count(axis=1))
# 数据操作
print(df.mean()) # 平均数
print(df.median()) # 中位数
print(df.max()) # 最大值
print(df.min()) # 最小值
print(df.var()) # 方差
print(df.std()) # 标准差
# 数据特征
a = df.describe() # 求出所有的数据特征
print(a.ix['max']) # ix 怎么用???
# 累计操作
print(df.cumsum()) # 累计求和
print(df.cumprod()) # 累计乘积
print(df.cummax()) # 累计最大值
print(df.cummin()) # 累计最小值
# 累计统计,滚动分布
print(df.rolling(2).sum()) # 相邻2个元素的和
print(df.rolling(2).mean()) # 相邻2个元素的平均值
print(df.rolling(2).var()) # 相邻2个元素的方差
print(df.rolling(2).std()) # 相邻2个元素的标准
print(df.rolling(2).min()) # 相邻2个元素的最小值
print(df.rolling(2).max()) # 相邻2个元素的最大值
# 相关分析
df1 = pd.Series(np.arange(1,5),index=['a','b','c','d']) # 1.66666666667
df2 = pd.Series(np.arange(5,9),index=['a','b','c','d']) # 1.0
# plt.plot(df1.values)
# plt.plot(df2.values)
# plt.show()
print(df1.cov(df2)) # 协方差,正相关>0,负相关<0,无关=0
print(df1.corr(df2)) # pearson 相关 0.8到1极强相关,0.6-0.8强相关;0.4-0.6中等相关;0.2-0.4弱相关,0-0.2极弱相关或无关
df3 = pd.Series(np.random.randint(1,5),index=['a','b','c','d']) # 0.0
df4 = pd.Series(np.random.randint(5,9),index=['a','b','c','d']) # nan
print(df3.cov(df4))
print(df3.corr(df4))
print(df3)
print(df4)
plt.scatter(df3.values,df4.values)
plt.show()