美文网首页Python
pandas笔记(Summarizing and Computi

pandas笔记(Summarizing and Computi

作者: 生信start_site | 来源:发表于2020-06-18 08:27 被阅读0次

    Correlation and Covariance(相关性和协方差)

    一些总结性的统计信息,如相关性和协方差,是从一对参数中计算出来的。举个例子:使用add-on pandas-datareader软件包进行一些统计操作。如果您还没有安装,可以通过conda或pip安装:

    conda install pandas-datareader
    

    我们使用这个包里自带的一些数据进行练习:

    In [1]: import pandas_datareader.data as web
    
    In [2]: import pandas as pd
    
    In [3]: all_data = {ticker: web.get_data_yahoo(ticker)
       ...: for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']}
    
    In [4]: price = pd.DataFrame({ticker: data['Adj Close']
       ...: for ticker, data in all_data.items()})
    
    In [5]: volume = pd.DataFrame({ticker: data['Volume']
       ...: for ticker, data in all_data.items()})
    
    In [6]: returns = price.pct_change()
    
    In [7]: returns.tail()
    Out[7]:
                    AAPL       IBM      MSFT      GOOG
    Date
    2020-06-10  0.025728 -0.015166  0.037092  0.006654
    2020-06-11 -0.048010 -0.091322 -0.053698 -0.042303
    2020-06-12  0.008634  0.033048  0.007892  0.006653
    2020-06-15  0.012367 -0.002133  0.006392  0.004720
    2020-06-16  0.026502  0.028771  0.024505  0.016107
    
    In [8]: returns['MSFT'].corr(returns['IBM']) #相关性
    Out[8]: 0.5961744396638181
    
    In [9]: returns['MSFT'].cov(returns['IBM']) #协方差
    Out[9]: 0.0001662046843830794
    
    In [10]: returns.corr() #求所有公司之间的相关性,所以这里自己与自己的相关性就是1.0
    Out[10]:
              AAPL       IBM      MSFT      GOOG
    AAPL  1.000000  0.530127  0.713621  0.644238
    IBM   0.530127  1.000000  0.596174  0.528073
    MSFT  0.713621  0.596174  1.000000  0.751929
    GOOG  0.644238  0.528073  0.751929  1.000000
    
    In [12]: returns.cov() #显示所有的协方差
    Out[12]:
              AAPL       IBM      MSFT      GOOG
    AAPL  0.000332  0.000156  0.000225  0.000201
    IBM   0.000156  0.000259  0.000166  0.000146
    MSFT  0.000225  0.000166  0.000300  0.000223
    GOOG  0.000201  0.000146  0.000223  0.000295
    

    你还可以指定计算某一列与其他几列的相关性:

    In [13]: returns.corrwith(returns.IBM)
    Out[13]:
    AAPL    0.530127
    IBM     1.000000
    MSFT    0.596174
    GOOG    0.528073
    dtype: float64
    

    Unique Values, Value Counts(唯一数值、数值计数)

    unique功能可以为你提取一个Series里的唯一数值,即不重复数值:

    In [14]: obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
    
    In [15]: uniques = obj.unique()
    
    In [16]: uniques
    Out[16]: array(['c', 'a', 'd', 'b'], dtype=object)
    

    你会发现返回值没有进行sort,你也可以对返回值进行排序:

    In [17]: uniques.sort()
    
    In [18]: uniques
    Out[18]: array(['a', 'b', 'c', 'd'], dtype=object)
    

    value_counts功能可以计算每一个元素出现的频率:

    In [19]: obj.value_counts()
    Out[19]:
    a    3
    c    3
    b    2
    d    1
    dtype: int64
    

    isin功能可以帮助检查某一个元素是否存在在数组里:

    In [21]: mask = obj.isin(['b','c'])
    
    In [22]: mask #先判断b和c是否在每一项里
    Out[22]:
    0     True
    1    False
    2    False
    3    False
    4    False
    5     True
    6     True
    7     True
    8     True
    dtype: bool
    
    In [23]: obj[mask] #返回判断为“True”的那些项
    Out[23]:
    0    c
    5    b
    6    b
    7    c
    8    c
    dtype: object
    

    与上面的'isin功能相似的还有一个是Index.get_indexer,可以感受一下:

    In [24]: to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a']) #第一个Series
    
    In [25]: unique_vals = pd.Series(['c', 'b', 'a']) #第2个Series
    
    In [26]: pd.Index(unique_vals).get_indexer(to_match) #判断第二个series里的元素在第一个里的索引位置
    Out[26]: array([0, 2, 1, 1, 0, 2])
    

    那么对于dataframe来说,如何显示每一个元素出现的次数呢?

    In [27]: data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4],
        ...: 'Qu2': [2, 3, 1, 2, 3],
        ...: 'Qu3': [1, 5, 2, 4, 4]})
    
    In [28]: data
    Out[28]:
       Qu1  Qu2  Qu3
    0    1    2    1
    1    3    3    5
    2    4    1    2
    3    3    2    4
    4    4    3    4
    
    In [29]: result = data.apply(pd.value_counts).fillna(0) #计算每一个元素出现的次数,如果遇到没有出现过的元素,则显示0
    
    In [30]: result
    Out[30]:
       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
    

    相关文章

      网友评论

        本文标题:pandas笔记(Summarizing and Computi

        本文链接:https://www.haomeiwen.com/subject/zzqjxktx.html