美文网首页Py100Skills
[Py010] 理解axis

[Py010] 理解axis

作者: 安哥生个信 | 来源:发表于2018-10-22 12:23 被阅读63次

    pandas很多函数里面都有axis参数,大部分默认为axis=0

    经常被搞得晕头转向……

    瞅了一个小时,大概理清些思路。

    我自己的理解:

    首先有一个dataframedf

    In[29]: df = pd.DataFrame([[2.0, 1.0],
       ...:                     [3.0, np.nan],
       ...:                     [1.0, 0.0]],
       ...:                    columns=list('AB'))
    In[30]: df
    Out[30]: 
         A    B
    0  2.0  1.0
    1  3.0  NaN
    2  1.0  0.0
    

    可以通过cumsum()函数计算df的累加和

    axis=0等同于axis="index",表示这个函数按照pd.index返回列索引)处理dataframe,

    所以cumsum(axis=0)以列为单位计算累加和

    In[31]: df.cumsum(axis=0)
    Out[31]: 
         A    B
    0  2.0  1.0
    1  5.0  NaN
    2  6.0  1.0
    

    axis=1等同于axis="columns", 表示这个函数按照pd.columns返回行索引)处理dataframe.

    所以cumsum(axis=1)以行为单位计算累加和

    In[32]: df.cumsum(axis=1)
    Out[32]: 
         A    B
    0  2.0  3.0
    1  3.0  NaN
    2  1.0  1.0
    

    对于那些只返回一个Series的函数,比如sum(),可以这样顺思路

    sum(axis=0)计算每列的和,所以最后返回以列名作为索引的Series;

    sum(aixs=1)计算每行的和,所以最后返回以行名作为索引的Series.

    In[33]: df.sum(axis=0)
    Out[33]: 
    A    6.0
    B    1.0
    dtype: float64
    In[34]: df.sum(axis=1)
    Out[34]: 
    0    3.0
    1    3.0
    2    1.0
    dtype: float64
    

    突然发现dropna()不太适用于上述思路,
    dropna(axis=0)按行删除
    dropna(axis=1)按列删除

    按照《Pandas Cookbook》里面的说法,好像也没法解释dropna()

    I remember the meaning of the axis parameter by thinking of 1 as looking like a column, and any operation with axis=1 returns a new column of data (has the same number of items that a column does).

    相关文章

      网友评论

        本文标题:[Py010] 理解axis

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