码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python与数据分析--Pandas操作进阶


    目录

    1.文件读取方式

    1.1.绝对路径读取文件

    1.2.相对路径读取文件

    2.列表数据操作

    2.1.列索引指定

    2.2.代码数据对齐

    3.创建新CSV文件

    4.缺失值处理

    4.1.缺失值创建

    4.2.缺失值检索

    4.3.缺失值查询

     4.3.1.isnull()函数判断

     4.3.2.notnull()函数判断

    4.3.3.any()函数搭配寻找

    4.3.4. 具体寻找缺失索引

    4.4.缺失值处理

    4.4.1.缺失值剔除

    4.4.2.缺失值填充

    4.4.2.1.按常数填充

    4.4.2.2.按指定填充

    4.4.2.3.按前数填充

    4.4.2.4.按后数填充

    4.4.2.5.按统计数据填充


    1.文件读取方式

    1. 绝对路径:绝对路径是指文件在硬盘上真正存在的路径,就是相当于从计算机根目录开始出发一直搜索到文档为止的目录信息.
    2. 相对路径:相对路径非常简单,就是需要提取的文件就是相对于当前目标文件位置。
    3. EXAMPLE:
    4. 1.pop_path = r"C:\Users\Zeng Zhong Yan\Desktop\py.vs\python学习\population.csv"这个就是绝对路径,从根目录开始.
    5. 2.pop_path = r'population.csv'这个就是相对路径,这个文件在文件夹里面,只需要直接提取出来即可。

    1.1.绝对路径读取文件

    1. #以具体路径的形式读取文件
    2. pop_path = r"C:\Users\Zeng Zhong Yan\Desktop\py.vs\python学习\population.csv"#前面一定要加个r
    3. population = pd.read_csv(pop_path, encoding='gbk',skiprows=[0, 1, 8, 9])
    4. population

    1.2.相对路径读取文件

    1. #将文件放入同文件夹中,直接读取
    2. pop_path = r'population.csv'
    3. pop = pd.read_csv(pop_path, encoding='gbk',skiprows=[0, 1, 8, 9])
    4. pop

    2.列表数据操作

    2.1.列索引指定

    1. #将某一列当作行索引
    2. pop = pd.read_csv(pop_path,
    3. encoding='gbk',
    4. skiprows=[0, 1, 8, 9],
    5. index_col='指标')
    6. pop.index.name = None
    7. pop

    2.2.代码数据对齐

    1. #代码对齐
    2. pop = pd.read_csv(pop_path, encoding='gbk',skiprows=[0, 1, 8, 9], index_col='指标')
    3. pop.index.name = None
    4. pd.set_option('display.unicode.ambiguous_as_wide', True)
    5. pd.set_option('display.unicode.east_asian_width', True)
    6. pd.set_option('display.max_columns', None)
    7. pop

    3.创建新CSV文件

    1. #读取数据
    2. #读取2019-2014年的人口并且创建一个对应的csv文件.
    3. pop2 = pop.iloc[:, 0:6]
    4. pop2.to_csv('pop2.csv', encoding='gbk')

    4.缺失值处理

    4.1.缺失值创建

    1. #缺失值处理
    2. np.random.seed(3)
    3. grades = pd.DataFrame(np.random.randint(60, 100, size=(4, 3)),
    4. index=['Ann', 'Bob', 'Cindy', 'Lee'],
    5. columns=['Python', 'C', 'Java'])
    6. #np.nan/None创建确实值
    7. grades.loc['Ann', 'C'] = np.nan
    8. grades.loc['Cindy', 'Python'] = None
    9. grades

    4.2.缺失值检索

    1. #发现检索缺失值
    2. grades.info()
    3. #查看对应的缺失值 3 non-null表示
    4. #Python/C各有一个缺失值

    4.3.缺失值查询

    1. Pandas有两种发现缺失值的方法:isnull和notnull
    2. isnull(): Series.isnull()、DataFrame.isnull()
     4.3.1.isnull()函数判断
    1. """
    2. 元素级别的判断---把DataFrame或Series所有元素的位置都列
    3. 出来,元素为空或者NA返回True,否则返回False
    4. """
    5. grades.isnull()
     4.3.2.notnull()函数判断
    1. """
    2. 和isnull类似,区别是notnull的判断依据相反,即缺失值返回
    3. False,非缺失值返回True
    4. """
    5. grades.notnull()
    4.3.3.any()函数搭配寻找
    1. #any()函数
    2. """
    3. 1.isnull()和any函数搭配:Series.any()、DataFrame.any()
    4. 2.和Numpy的any函数类似,统计Series或DataFrame中是否存在True,若存在,返回True,否则返回False
    5.  2.1.默认参数axis=0,即按列统计
    6.  2.2.调用DF.isull( ).any( ),如果某一列中有缺失值,则返回值中该列对应值为True
    7. """
    8. grades.isnull().any()
    9. #如结果所示,Java没有缺失值,显示为True C和Python都有缺失值,显示为False
    4.3.4. 具体寻找缺失索引
    1. #搜寻nan的信息
    2. grades.index[grades.isnull().any(axis=1)]#按行搜索,index[]花式搜索

    4.4.缺失值处理

    4.4.1.缺失值剔除
    1. #处理缺失值:
    2. """
    3. Pandas剔除缺失值的方法-DataFrame.dropna()
    4. 默认axis=0,剔除包含缺失值的整行数据
    5. """
    6. grades.dropna()
    4.4.2.缺失值填充
    1. #填充缺失值
    2. #数据是宝贵的,一般情况只要数据缺失比例不高,尽量不要剔除缺失值,而是填充缺失值
    3. """
    4. 1.填充缺失值的方法:Series.fillna(),DataFrame.fillna()
    5. 2.DataFrame.fillna(value=None, method=None,axis=None, inplace=False)
    6.  2.1.value: 填充的值---用常数替代缺失值
    7.  2.2.method:填充方式---{ ‘bfill’, 'ffill', None}
    8.  2.3.ffill : 使用前一个值来填充缺失值
    9.  2.4.bfill : 使用后一个值来填充缺失值
    10. """
    4.4.2.1.按常数填充
    1. #全部填充0
    2. grades.fillna(0)
    4.4.2.2.按指定填充
    1. #按照自己的意愿填充
    2. grades.fillna({'Python':80,'C':60})
    4.4.2.3.按前数填充
    1. #分别采用ffill和bfill方式对dataFrame缺失值填充
    2. #ffill参考前一个
    3. grades.fillna(method='ffill')#默认axis=0 按列来
    4. grades.fillna(method='ffill',axis=1)#也可以指定
    4.4.2.4.按后数填充
    1. #bfill参考后一个
    2. grades.fillna(method='bfill')#默认axis=0 按列来
    3. grades.fillna(method='bfill',axis=1)#也可以指
    4.4.2.5.按统计数据填充
    1. #利用某些统计数据进行填充
    2. grades['C'].fillna(grades['C'].mean())

  • 相关阅读:
    Python 约瑟夫生者死者小游戏
    如何使用 Python 中 Pandas 进行数据分析?
    第二十四章《学生信息管理系统》第2节:系统功能实现
    java毕业设计大学生心愿墙系统Mybatis+系统+数据库+调试部署
    金仓数据库KingbaseES物理备份恢复命令选项(info命令)
    目标检测YOLO实战应用案例100讲-海杂波背景下的弱目标检测(下)
    如何将进程脱离于shell运行?
    pytorch-实现运动鞋品牌识别
    JS 中的 Window.open() 用法详解
    2.1 OrCAD软件中怎么新建库文件?【OrCAD原理图封装库50问解析】
  • 原文地址:https://blog.csdn.net/m0_71819746/article/details/133381649
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号