前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandasNote4

pandasNote4

作者头像
皮大大
发布2021-03-01 17:23:32
3060
发布2021-03-01 17:23:32
举报
代码语言:javascript
复制
import numpy as np
import pandas as pd
from pandas import Series, DataFramei
import pandas_datareader.data as web

协方差和相关系数

  • corr()
  • cov()
  • corrwith()
代码语言:javascript
复制
all_data = {ticker: web.get_data_yahoo(ticker)
            for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']}
price = pd.DataFrame({ticker: data['Adj Close']
                      for ticker, data in all_data.items()})
volume = pd.DataFrame({ticker: data['Volume']
                        for ticker, data in all_data.items()})
代码语言:javascript
复制
# 计算价格的百分变化
returns = price.pct_change()
returns.head()

AAPL

IBM

MSFT

GOOG

Date

2009-12-31

NaN

NaN

NaN

NaN

2010-01-04

0.015565

0.011841

0.015420

0.010920

2010-01-05

0.001729

-0.012080

0.000323

-0.004404

2010-01-06

-0.015906

-0.006496

-0.006137

-0.025209

2010-01-07

-0.001849

-0.003461

-0.010400

-0.023280

代码语言:javascript
复制
# 计算相关系数和协方差
print(returns["MSFT"].corr(returns["IBM"]))  # 通过标签的形式
print(returns["MSFT"].cov(returns["IBM"]))
代码语言:javascript
复制
0.49161308372179857
8.80330763108205e-05
代码语言:javascript
复制
returns.MSFT.corr(returns.IBM)  # 通过属性的形式
代码语言:javascript
复制
0.49161308372179857
代码语言:javascript
复制
# 协方差和相关系数矩阵
print(returns.corr())
print(returns.cov())
代码语言:javascript
复制
          AAPL       IBM      MSFT      GOOG
AAPL  1.000000  0.387306  0.458039  0.463707
IBM   0.387306  1.000000  0.491613  0.407577
MSFT  0.458039  0.491613  1.000000  0.539243
GOOG  0.463707  0.407577  0.539243  1.000000
          AAPL       IBM      MSFT      GOOG
AAPL  0.000267  0.000078  0.000108  0.000118
IBM   0.000078  0.000154  0.000088  0.000079
MSFT  0.000108  0.000088  0.000209  0.000121
GOOG  0.000118  0.000079  0.000121  0.000242
代码语言:javascript
复制
# corrwith():计算某列或者行和另一个S或者DF数据之间的相关系数
returns.corrwith(returns.IBM)
代码语言:javascript
复制
AAPL    0.387306
IBM     1.000000
MSFT    0.491613
GOOG    0.407577
dtype: float64

唯一值、值计数和成员资格

  • unique():返回未排序的值
  • value_counts():计算出现的频率,降序
    • pd.value_counts(obj.values, sort=False)
  • isin()判断成员资格
代码语言:javascript
复制
obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
代码语言:javascript
复制
# 值计数功能
uniques=obj.unique()
uniques
代码语言:javascript
复制
array(['c', 'a', 'd', 'b'], dtype=object)
代码语言:javascript
复制
obj.value_counts()  # 默认是降序通过sort=False关闭降序功能pd.value_counts(obj.values, sort=False)
代码语言:javascript
复制
a    3
c    3
b    2
d    1
dtype: int64
代码语言:javascript
复制
# 成员资格
mask = obj.isin(['b', 'c'])
mask
代码语言:javascript
复制
0     True
1    False
2    False
3    False
4    False
5     True
6     True
7     True
8     True
dtype: bool
代码语言:javascript
复制
obj[mask]
代码语言:javascript
复制
0    c
5    b
6    b
7    c
8    c
dtype: object

相关列的柱状图

将pandas.value_counts传给该DataFrame的apply函数

代码语言:javascript
复制
data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4],
                     'Qu2': [2, 3, 1, 2, 3],
                     'Qu3': [1, 5, 2, 4, 4]})
data

Qu1

Qu2

Qu3

0

1

2

1

1

3

3

5

2

4

1

2

3

3

2

4

4

4

3

4

代码语言:javascript
复制
result = data.apply(pd.value_counts).fillna(0)
result

Qu1

Qu2

Qu3

1

1.0

1.0

1.0

2

0.0

2.0

1.0

3

2.0

2.0

0.0

4

2.0

0.0

2.0

5

0.0

0.0

1.0

代码语言:javascript
复制
data.apply(pd.value_counts)

Qu1

Qu2

Qu3

1

1.0

1.0

1.0

2

NaN

2.0

1.0

3

2.0

2.0

NaN

4

2.0

NaN

2.0

5

NaN

NaN

1.0

Stay Foolish Stay Hungry

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-9-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 协方差和相关系数
  • 唯一值、值计数和成员资格
  • 相关列的柱状图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档