zoukankan      html  css  js  c++  java
  • Pandas —— (4)常用数学、统计方法

    @


    和numpy的操作基本一致

    基本参数:axis、skipna

    # 基本参数:axis、skipna
    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame({'key1':[4,5,3,np.nan,2],
                     'key2':[1,2,np.nan,4,5],
                     'key3':[1,2,3,'j','k']},
                     index = ['a','b','c','d','e'])
    print(df)
    print(df['key1'].dtype,df['key2'].dtype,df['key3'].dtype)
    print('-----')
    
    m1 = df.mean()
    print(m1,type(m1))
    print('单独统计一列:',df['key2'].mean())
    print('-----')
    # np.nan :空值
    # .mean()计算均值
    # 只统计数字列
    # 可以通过索引单独统计一列
    
    m2 = df.mean(axis=1)
    print(m2)
    print('-----')
    # axis参数:默认为0,以列来计算,axis=1,以行来计算,这里就按照行来汇总了
    
    m3 = df.mean(skipna=False)
    print(m3)
    print('-----')
    # skipna参数:是否忽略NaN,默认True,如False,有NaN的列统计结果仍未NaN
    

    主要数学计算方法

    # 主要数学计算方法,可用于Series和DataFrame(1)
    
    df = pd.DataFrame({'key1':np.arange(10),
                      'key2':np.random.rand(10)*10})
    print(df)
    print('-----')
    
    print(df.count(),'→ count统计非Na值的数量
    ')
    print(df.min(),'→ min统计最小值
    ',df['key2'].max(),'→ max统计最大值
    ')
    print(df.quantile(q=0.75),'→ quantile统计分位数,参数q确定位置
    ')
    print(df.sum(),'→ sum求和
    ')
    print(df.mean(),'→ mean求平均值
    ')
    print(df.median(),'→ median求算数中位数,50%分位数
    ')
    print(df.std(),'
    ',df.var(),'→ std,var分别求标准差,方差
    ')
    print(df.skew(),'→ skew样本的偏度
    ')
    print(df.kurt(),'→ kurt样本的峰度
    ')
    
    # 主要数学计算方法,可用于Series和DataFrame(2)
    
    df['key1_s'] = df['key1'].cumsum()
    df['key2_s'] = df['key2'].cumsum()
    print(df,'→ cumsum样本的累计和
    ')
    
    df['key1_p'] = df['key1'].cumprod()
    df['key2_p'] = df['key2'].cumprod()
    print(df,'→ cumprod样本的累计积
    ')
    
    print(df.cummax(),'
    ',df.cummin(),'→ cummax,cummin分别求累计最大值,累计最小值
    ')
    # 会填充key1,和key2的值
    

    唯一值:.unique(),去重

    # 唯一值:.unique(),去重
    
    s = pd.Series(list('asdvasdcfgg'))
    sq = s.unique()
    print(s)
    print(sq,type(sq))
    print(pd.Series(sq))
    # 得到一个唯一值数组
    # 通过pd.Series重新变成新的Series
    
    sq.sort()
    print(sq)
    # 重新排序
    

    值计数:.value_counts()

    # 值计数:.value_counts()
    
    sc = s.value_counts(sort = False)  # 也可以这样写:pd.value_counts(sc, sort = False)
    print(sc)
    # 得到一个新的Series,计算出不同值出现的频率
    # sort参数:排序,默认为True
    

    成员资格:.isin()

    # 成员资格:.isin()
    
    s = pd.Series(np.arange(10,15))
    df = pd.DataFrame({'key1':list('asdcbvasd'),
                      'key2':np.arange(4,13)})
    print(s)
    print(df)
    print('-----')
    
    print(s.isin([5,14]))
    print(df.isin(['a','bc','10',8]))
    # 用[]表示
    # 得到一个布尔值的Series或者Dataframe
    

    打赏

    码字不易,如果对您有帮助,就打赏一下吧O(∩_∩)O

  • 相关阅读:
    【Nginx学习】安装及常用命令
    【Nginx学习】基础知识
    【Nginx学习】Xshell7连接CentOS7艰难轶事
    【LeetCode刷题】5343. 多次求和构造目标数组:妙解
    【LeetCode刷题】1353. 最多可以参加的会议数目
    【转载】priority_queue用法
    【LeetCode刷题】供暖器:妙解
    【妙解】重复的子字符串
    【转载学习】基金理财学习
    【转载】sync_with_stdio + cin.tie
  • 原文地址:https://www.cnblogs.com/long5683/p/13158529.html
Copyright © 2011-2022 走看看