Open zhonhui opened 5 years ago
最近学习了分组级运算和数据透视表,其中涉及到一些常用的统计方法和计量知识,以前跑数据都用stata实现,数据初步识别用Excel,python一些数据包包含了这些统计方法,但是计量应用还是缺少完整的专业处理模块。下面分享几个常用的数据统计方法: 透视表和交叉表 分组加权平均和相关系数 标普500几只股票的收盘价实例 OLS回归
pivot_table为基本的透视表工具,crosstab适用于定性频率的分组统计
聚合'total_bill', 'size',根据day分组,行为day,列为smoker import numpy as np import pandas as pd tips=pd.read_csv('C:/Users/lizho/Documents/Python study/pydata-book-2nd-edition/examples/tips.csv') tips.pivot_table(['total_bill', 'size'], index=['time', 'day'], columns='smoker',aggfunc=np.sum,margins=True,fill_value=0)"" #aggfunc=np.sum可以更换统计值,margins=True将列分组合并加总,fill_value=0对空值赋值0
df=pd.DataFrame({'category':['a','a','a','a','b','b','b','b'], 'data':np.random.randn(8), 'weight':np.random.rand(8)}) grouped=df.groupby('category') get_wavy=lambda g:np.average(g['data'],weights=g['weight'])#设定一个函数 g grouped.apply(get_wavy)
close_px=pd.read_csv('C:/Users/lizho/Documents/Python study/pydata-book-2nd-edition/examples/stock_px.csv', parse_dates=True, index_col=0)#index_col=0重新设置一列为索引,parse_dates=True将日期设置为索引 rets=close_px.pct_change().dropna()#计算各股票的日收益率(百分制) spx_corr=lambda x:x.corrwith(x['SPX'])#设定相关系数函数 by_year=rets.groupby(lambda x:x.year)#按每个变量的年份分组,lambda x:x.month,即按月份分组 by_year.apply(spx_corr)
继续引用上面的数据
import statsmodels.api as sm#调用statsmodels库 def regress(data, yvar, xvars):#data为一个字典 Y = data[yvar] X = data[xvars] X['intercept'] = 1. result = sm.OLS(Y, X).fit()#调用OLS方法 return result.params by_year.apply(regress, 'AAPL', ['SPX'])
越来越深刻,学到了学到了
统计进阶
透视表和交叉表
pivot_table为基本的透视表工具,crosstab适用于定性频率的分组统计
分组加权平均和相关系数
分组加权平均和相关系数
OLS回归
继续引用上面的数据