Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 688|回复: 0

pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-5-18 11:17:40 | 显示全部楼层 |阅读模式

    pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)

     

    目录

    常用数学统计方法总结
    读取或保存数据 缺省值和异常值处理

      

     

     

    常用数学统计方法总结

    count 计算非NA值的数量
    describe 针对Series或DataFrame列计算统计
    min/max/sum 计算最小值 最大值 总和
    argmin argmax 计算能够获取到最小值和最大值的索引位置(整数)
    idxmin idxmax 计算能够获取到最小值和最大值的索引值
    quantile 计算样本的分位数(0到1)
    mean 值的平均数
    median 值的中位数
    mad 根据平均值计算平均绝对距离差
    var 样本数值的方差
    std 样本值的标准差
    cumsum 样本值的累计和
    cummin cummax 样本的累计最小值 最大值
    cumprod 样本值的累计积
    pct_change 计算百分数变化
    

     

     

     

     

    读取或保存数据

     

    读取数据

    pandas可以从外部获取数据,构建数据对象,例如xlsx后缀的ececl文件,csv文件,txt文本等

    下面以txt文件举例:

     

    先创建txt文本

     

     读取txt文本数据

    #读取txt文件
    import pandas as pd
    
    # df = pd.read_csv('data1.txt',sep=':')   #默认sep=','以什么分割数据,默认逗号
    # print("data01.csv文件的原始数据==========================")
    # print(df)
    
    df = pd.read_csv('data1.txt',sep=':',header=None) #默认sep=',',header:去除表头,添加默认下标
    print("data01.csv文件的原始数据==========================")
    print(df)
    #读取excel文件
    # df=pd.read_excel('data2.xlsx')
    # print(df)

      

     

         0   1   2
    0  张伊曼  27  90
    1  张巧玲  27  90
    2  张诗诗  27  90
    3  张思思  27  90
    

      

     

    保存数据

    df.to_csv('data1.csv') #保存为csv文件
    df.to_excel('data2.xlsx') #保存为xlsx

      

     

     

     

    缺省值和异常值处理

     

    缺省值

    什么是缺省值

    null/None/NaN null经常出现在数据库中 None是python中的缺失值,类型是NoneType NaN也是python中的缺失值,意思是不是一个数字,类型是float 在pandas和Numpy中会将None替换为NaN,而导入数据库中的时候则需要把NaN替换成None

      

    缺失值处理方法
    pandas中缺省值NaN的4种处理方法:1 isnull 2 notnull 3 dropna 4 fillna
         方法             说明
    dropna         根据标签中的缺失值进行过滤,删除缺失值
    fillna         对缺失值进行填充
    isnull         返回一个布尔值对象 ,判断 哪些值是缺失值
    notnull        isnull的否定式
    

      

     

    判断缺省值

    import numpy as np
    import pandas as pd
    df = pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'],columns=['A', 'B', 'C', 'D'])
    #
    print(df)
    
    #判断全部值的缺省值
    d1=df.isnull()
    print(d1)
    
    #在某行中判断缺省值
    d2=df[0:1].isnull()
    print(d2)
    
    #在某列中# 'A'列判断缺省值
    d3=df['A'].isnull()
    print(d3)
    

     

       A  B   C   D
    a  0  1   2   3
    b  4  5   6   7
    c  8  9  10  11
    A B C D a False False False False b False False False False c False False False False
    A B C D a False False False False
    a False b False c False Name: A, dtype: bool

      

     

     

    删除缺省值

    常用参数解释:
    how:'all',删除全为空值的行或列
    inplace=True:覆盖之前的数据
    axis=0:选择行或列
    

     

    import numpy as np
    import pandas as pd
    dict0 = {
        '语文': [90, 80, 60],
        '数学': [99, 70, 89],
        '外语': [98, 10, 75],
        '物理': 90
    }
    df0 = pd.DataFrame(dict0)
    #
    df0['数学'][1] = np.nan
    #
    print("df0原数据===============================")
    print(df0)
    
    print("df0.dropna()===============================")
    print(df0.dropna())       #默认删除有缺省值所在的行
    
    print("df0.dropna(axis=1)===============================")
    print(df0.dropna(axis=1)) #默认删除有缺省值所在的列
    
    print("df0.dropna(how='all',axis=1)===============================")
    df0.ix[1] = np.nan
    print(df0.dropna(how='all')) #当所有元素是缺省值的时候 才删除
    
    print("df0.dropna(how='any',axis=1)===============================")
    df0['外语'][0] = np.nan
    print(df0.dropna(how='any')) #当所有元素有一个是缺省值的时候 才删除
    

      

     

       语文    数学  外语  物理
    0  90  99.0  98  90
    1  80   NaN  10  90
    2  60  89.0  75  90
    df0.dropna()===============================
       语文    数学  外语  物理
    0  90  99.0  98  90
    2  60  89.0  75  90
    df0.dropna(axis=1)===============================
       语文  外语  物理
    0  90  98  90
    1  80  10  90
    2  60  75  90
    df0.dropna(how='all',axis=1)===============================
         语文    数学    外语    物理
    0  90.0  99.0  98.0  90.0
    2  60.0  89.0  75.0  90.0
    

     

     

    填充缺失值

    注意:在这里inplace会修改原始数据,并自动保存

    import numpy as np
    import pandas as pd
    dict0 = {
        '语文': [90, 80, 60],
        '数学': [99, 70, 89],
        '外语': [98, 10, 75],
        '物理':None
    }
    df0 = pd.DataFrame(dict0)
    print('df0的原始数据=================================')
    print(df0)
    
    print('将所有的缺省的数据填充为1=================================')
    print(df0.fillna(1))#参数为填入值,可以为单个值,也可以为列表
    
    
    print('将找到的缺省数据填充为平均值=================================')
    print(df0.fillna(df0['语文'].mean()))#结合numpy的数学运算函数,求平均值
    print(df0['物理'].fillna(df0['语文'].mean()))#结合numpy的数学运算函数,求平均值,当然pandas自己也有自己的方法
    

      

    df0的原始数据=================================
       语文  数学  外语    物理
    0  90  99  98  None
    1  80  70  10  None
    2  60  89  75  None
    将所有的缺省的数据填充为1=================================
       语文  数学  外语  物理
    0  90  99  98   1
    1  80  70  10   1
    2  60  89  75   1
    将找到的缺省数据填充为平均值=================================
       语文  数学  外语         物理
    0  90  99  98  76.666667
    1  80  70  10  76.666667
    2  60  89  75  76.666667
    0    76.666667
    

     

     

    异常值处理

    异常值就是与你想要获取的值偏差太大或者不是想要的值

    先用条件判断筛选出来

    再进行怎样的处理看需要

     

     

    数据去重

    unique方法用于获取Series或DataFrame某列中的唯一值数组(去重数据后的数组)
    value_counts方法用于计算一个Series或DataFrame某列中各值的出现频率
    isin方法用于判断矢量化集合的成员资格,是否在里面,可用于选取Series中或DataFrame列中数据的子集
    另外也可以使用replace方法进行替换

     

    这里演示的是Series类型数据

    import numpy as np
    import pandas as pd
    s1 = pd.Series(['a', 'b', 'c', 'b', 'a'])
    print("s1的原始数据==============================")
    print(s1)
    #
    print("数据去重方法:s1.unique()==============================")
    print(s1.unique())   #注意:s1.unique()返回的类型也是Series
    #
    print("单个值出现的个数:s1.value_counts()['a']==============================")
    print(s1.value_counts()['a'])
    #
    print("值是否存在的方法:s1.isin(['a', 'b'])==============================")
    print(s1.isin(['a', 'b']))
    #print('替换方法================================')
    #print(s1[0].replace['e'])

      

    s1的原始数据==============================
    0    a
    1    b
    2    c
    3    b
    4    a
    dtype: object
    数据去重方法:s1.unique()==============================
    ['a' 'b' 'c']
    单个值出现的个数:s1.value_counts()['a']==============================
    2
    值是否存在的方法:s1.isin(['a', 'b'])==============================
    0     True
    1     True
    2    False
    3     True
    4     True
    dtype: bool
    

      

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-30 13:09 , Processed in 0.069591 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表