【Python基础】第十九课:使用pandas产生叙述性统计
想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️。pandas提供了一个专门从财经网站获取金融数据的API接口,封装在。用于计算当前元素与先前元素相差的百分比。pandas中DataFrame的。的用法见本文第3部分。groupby的用法见。的用法见本文第4部分。
1.叙述性统计与推论性统计
叙述性统计:
- 有系统的归纳数据,了解数据的轮廓。
- 对数据样本做叙述性陈述,例如:平均数、标准偏差、计次频率、百分比。
- 对数据资料的图像化处理,将数据摘要变为图表。
推论性统计:
- 资料模型的构建。
- 从样本推论整体资料的概况。
- 相关、回归、单因子变异数、因素分析。
2.使用pandas产生叙述性统计
pandas提供了一个专门从财经网站获取金融数据的API接口,封装在pandas_datareader
中。我们用这个API来获取用于统计的数据:
import pandas_datareader
df = pandas_datareader.data.DataReader('BABA', data_source='yahoo')
print(df.tail())
pandas_datareader
的用法见本文第3部分。
2.1.简易统计
# 算出总和
df['Close'].sum()
# 算出平均
df['Close'].mean()
# 算出标准差
df['Close'].std()
# 取得最小值
df['Close'].min()
df[['Open', 'Close']].min()
# 取得最大值
df['Close'].max()
df[['Open', 'Close']].max()
# 取得笔数
df['Close'].count()
# 取得整体叙述性统计
df.describe()
2.2.基本计算
# 计算当日涨跌
df['diff'] = df['Close'] - df['Open']
df['rise'] = df['diff'] > 0
df['fall'] = df['diff'] < 0
# 计算涨跌次数
df[['rise', 'fall']].sum()
# 计算当月涨跌次数
df.loc[df.index >= '2017-04-01', ['rise', 'fall']].sum()#这里只能用.loc,不能用.iloc
df.index
:
index的格式为datetime。
# 根据年月统计涨跌次数
df.groupby([df.index.year, df.index.month])['rise', 'fall'].sum()
groupby的用法见链接。
# 计算每日报酬
df['ret'] = df['Close'].pct_change(1)
pct_change
的用法见本文第4部分。
3.pandas_datareader.data.DataReader
def DataReader(
name,
data_source=None,
start=None,
end=None,
retry_count=3,
pause=0.1,
session=None,
api_key=None,
)
参数讲解:
name
:股票名称。data_source
:数据来源。start
:起始时间。end
:终止时间。retry_count
:如果获取数据失败,则尝试重新获取的次数。pause
:尝试重新获取数据的时间间隔。session
:requests.sessions.Session instance to be used。api_key
:specify an API key for certain data sources。
4.pct_change
pandas中DataFrame的pct_change
用于计算当前元素与先前元素相差的百分比。
def pct_change(self, periods=1,fill_method='pad', limit=None, freq=None,**kwargs)
periods=n
:表示当前元素与先前第n个元素相差的百分比。fill_method
:缺失值的填补方式,默认为pad方式。limit
:填补连续缺失值的个数限制。freq
:DateOffset, timedelta, or offset alias string, optional. Increment to use from time series API (e.g. ‘M’ or BDay())。**kwargs
:Additional keyword arguments are passed intoDataFrame.shift
orSeries.shift
。
👉例子一:
s = pd.Series([90, 91, 85])
s.pct_change()
为:
91 − 90 90 = 0.011111 ; 85 − 91 91 = − 0.065934 \frac{91-90}{90}=0.011111;\frac{85-91}{91}=-0.065934 9091−90=0.011111;9185−91=−0.065934
s.pct_change(periods=2)
为:
85 − 90 90 = − 0.055556 \frac{85-90}{90}=-0.055556 9085−90=−0.055556
👉例子二:
s = pd.Series([90, 91, None, 85])
s.pct_change(fill_method='ffill')
为:
👉例子三:
df = pd.DataFrame({
'FR': [4.0405, 4.0963, 4.3149],
'GR': [1.7246, 1.7482, 1.8519],
'IT': [804.74, 810.01, 860.13]},
index=['1980-01-01', '1980-02-01', '1980-03-01'])
df.pct_change()
为:
df.pct_change(axis='columns')
为:
5.代码地址
想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️
个人博客网站:https://shichaoxin.com
GitHub:https://github.com/x-jeff
更多推荐
所有评论(0)