python自学篇十六[pandas——数据分析 (二):读取文件+索引+NaNs处理方法]
文章目录
- 概括:Numpy+Scipy+pandas+matplotlib
- pandas基本功能
- 一.数据文件读取/文本数据读取
- 1.pandas:数据文件读取
- 2.读取csv文件
- 3.读取txt文件
- 二.索引、选取和数据过滤
- 1.指定行头部
- 2.切片获取内容
- 三.pandas:缺省值NaN处理方法
- 1.dropna
- 1.dropna()
- 2.dropna(how='all')
- 3.dropna(axis=1)
- 2.fillna
- 1.fillna(0)
- 2.fillna({1:0.5,2:-1,3:1})
- 3.isnul
- 4. notnull
概括:Numpy+Scipy+pandas+matplotlib
pandas基本功能
一.数据文件读取/文本数据读取
1.pandas:数据文件读取
通过pandas提供的read_xxx相关的函数可以读取文件中的数据,并形成DataFrame,常用的数据读取方法为:read_csv,主要可以读取文本类型的数据
help(pd.read_csv)
2.读取csv文件
先创建一个data1.csv文件,里面内容写:
name,age,source
Peter,18,98.5
Tom,21,78.2
Bob,24,98.5
Wangdachui,20,89.2
Jupyter notebook代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
##读取csv文件
df=pd.read_csv("data1.csv")
df
3.读取txt文件
先创建一个data01.txt文件,里面内容写:
王大锤;18;100;99;98
王大锤;18;100;99;98
王大锤;18;100;99;98
Jupyter notebook代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
#读取文本数据,指定";"为分隔符,不读取头部数据
df=pd.read_csv("data01.txt",sep=';',header=None)
df
二.索引、选取和数据过滤
pandas:数据过滤获取
通过DataFrame的相关方式可以获取对应的列或者数据形成一个新的DataFrame, 方便后续进行统计计算。
对于DataFrame/Series中的NaN一般采取的方式为删除对应的列/行或者填充一个默认值
1.指定行头部
创建一个data01.txt文件,里面内容写:
王大锤;18;100;99;98
王大锤;18;100;99;98
王大锤;18;100;99;98
Jupyter notebook代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
columns=['name','age',u'语文',u'数学',u'英语']
df.columns=columns
df
2.切片获取内容
创建一个data01.txt文件,里面内容写:
王大锤;18;100;99;98
王大锤;18;100;99;98
王大锤;18;100;99;98
Jupyter notebook代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
columns=['name','age',u'语文',u'数学',u'英语']
df=df[columns[2:]]
df
三.pandas:缺省值NaN处理方法
对于DataFrame/Series中的NaN一般采取的方式为删除对应的列/行或者填充一个默认值
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
df2=DataFrame([['Tom',np.nan,456.67,'M'],['Merry',34,345.56,np.nan],['Gerry',np.nan,np.nan,np.nan],['Jom',np.nan,456.67,'M'],['Jone',18,35.12,'F']],columns=['name','age','salary','gender']
)
df2
结果:
name age salary gender
0 Tom NaN 456.67 M
1 Merry 34.0 345.56 NaN
2 Gerry NaN NaN NaN
3 Jom NaN 456.67 M
4 Jone 18.0 35.12 F
1.dropna
根据标签的值中是否存在缺失数据对轴标签进行过滤(删除), 可以通过阈值的调节对缺失值的容忍度
1.dropna()
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
df2=DataFrame([['Tom',np.nan,456.67,'M'],['Merry',34,345.56,np.nan],['Gerry',np.nan,np.nan,np.nan],['Jom',np.nan,456.67,'M'],['Jone',18,35.12,'F']],columns=['name','age','salary','gender']
)
df2.dropna()#默认丢弃只要包含缺失值的行(去掉有NaN的数据)
结果:
name age salary gender
4 Jone 18.0 35.12 F
2.dropna(how=‘all’)
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
df2=DataFrame([['Tom',np.nan,456.67,'M'],['Merry',34,345.56,np.nan],['Gerry',np.nan,np.nan,np.nan],['Jom',np.nan,456.67,'M'],['Jone',18,35.12,'F']],columns=['name','age','salary','gender']
)
df2.dropna(how='all')#给定只丢弃值全部为缺失值的行
结果:
name age salary gender
0 Tom NaN 456.67 M
1 Merry 34.0 345.56 NaN
2 Gerry NaN NaN NaN
3 Jom NaN 456.67 M
4 Jone 18.0 35.12 F
3.dropna(axis=1)
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
df2=DataFrame([['Tom',np.nan,456.67,'M'],['Merry',34,345.56,np.nan],['Gerry',np.nan,np.nan,np.nan],['Jom',np.nan,456.67,'M'],['Jone',18,35.12,'F']],columns=['name','age','salary','gender']
)
df2.dropna(axis=1)#丢弃列
结果:
name
0 Tom
1 Merry
2 Gerry
3 Jom
4 Jone
2.fillna
用指定值或者插值的方式填充缺失数据,比如: ffill或者bfill
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pddf=DataFrame(np.random.randn(7,3))
df.loc[:4,1]=np.nan
df.loc[:2,2]=np.nan
df
结果:
0 1 2
0 -0.031422 NaN NaN
1 -0.916141 NaN NaN
2 0.427765 NaN NaN
3 0.242490 NaN 0.200289
4 -0.214651 NaN 0.533594
5 0.302438 -0.228859 -0.883538
6 -0.356205 0.154669 -0.448864
1.fillna(0)
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pddf=DataFrame(np.random.randn(7,3))
df.loc[:4,1]=np.nan
df.loc[:2,2]=np.nan
print(df.fillna(0))
print()
print(df.fillna('fill'))
结果:
0 1 2
0 -1.034991 0.000000 0.000000
1 -1.923518 0.000000 0.000000
2 -1.314832 0.000000 0.000000
3 0.167929 0.000000 -0.806852
4 0.900060 0.000000 1.443878
5 0.312364 0.222698 -1.000081
6 -0.291597 1.095243 0.6787130 1 2
0 1.093552 fill fill
1 2.208307 fill fill
2 0.319327 fill fill
3 -0.525311 fill -0.11486
4 1.539547 fill -1.30771
5 -3.682927 0.588243 1.15384
6 0.255435 -2.06252 -0.808872
2.fillna({1:0.5,2:-1,3:1})
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pddf=DataFrame(np.random.randn(7,3))
df.loc[:4,1]=np.nan
df.loc[:2,2]=np.nan
df.fillna({1:0.5,2:-1,3:1})
结果:
```python
0 1 2
0 1.317635 -1.574467 1.399366
1 -0.690984 0.823191 -0.138721
2 2.840376 -0.522517 0.347104
3 -0.036683 0.767751 -0.646185
4 0.676305 -1.961409 -1.337382
5 1.752402 -1.192964 -0.057789
6 0.171615 0.554056 -1.322705
3.isnul
返回一个含有布尔值的对象,这些布尔值表示那些值是缺失值NA
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
df2=DataFrame([['Tom',np.nan,456.67,'M'],['Merry',34,345.56,np.nan],['Gerry',np.nan,np.nan,np.nan],['Jom',np.nan,456.67,'M'],['Jone',18,35.12,'F']],columns=['name','age','salary','gender']
)
df2.isnull()
结果:
name age salary gender
0 False True False False
1 False False False True
2 False True True True
3 False True False False
4 False False False False
4. notnull
isnull的否定式
代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
df2=DataFrame([['Tom',np.nan,456.67,'M'],['Merry',34,345.56,np.nan],['Gerry',np.nan,np.nan,np.nan],['Jom',np.nan,456.67,'M'],['Jone',18,35.12,'F']],columns=['name','age','salary','gender']
)
df2.notnull()
结果:
name age salary gender
0 True False True True
1 True True True False
2 True False False False
3 True False True True
4 True True True True
python自学篇十六[pandas——数据分析 (二):读取文件+索引+NaNs处理方法]相关推荐
- python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...
- [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站防护
这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Python网络攻防基础知识.Python多线程.C段扫描和数据库编程, ...
- 计算机强制关机原理,解决PC常见问题 篇十六:究竟如何关机才是正确的姿势---关于“按电源键强制关机对硬件无危害”的...
解决PC常见问题 篇十六:究竟如何关机才是正确的姿势---关于"按电源键强制关机对硬件无危害"的 2020-08-10 10:21:40 36点赞 186收藏 64评论 本文背景 ...
- Vue实战篇十六:导航菜单
系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...
- 小鱼易连电脑版_生活多么美好 篇十六:我的桌面改造,有绿植,有小鱼,有大音箱...
原标题:生活多么美好 篇十六:我的桌面改造,有绿植,有小鱼,有大音箱 生活多么美好 篇十六:我的桌面改造,有绿植,有小鱼,有大音箱 2020-11-06 22:13:312点赞1收藏1评论 想攒一台电 ...
- Python的学习(十六):对文件的操作
Python的学习(十六):对文件的操作 编码格式的介绍 Python中的解释器使用的是Unicode(内存) .py文件在磁盘上使用UTF-8存储(外存) 如何修改文件格式?不写的话默认为UTF-8 ...
- 36.深度解密三十六:网络舆情监测之另类“免费监测”方法详解
网络营销推广技术.技巧深度解密(三十六)指南: 1.本文档适合零基础以及互联网营销推广工作者,主要讲解免费网络舆情监测的问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律 ...
- Wix 安装部署教程(十六) -- 自动生成多语言文件
Wix 安装部署教程(十六) -- 自动生成多语言文件 原文:Wix 安装部署教程(十六) -- 自动生成多语言文件 因为持续集成需要,所有项目编译完之后生成一个多语言的安装包.之前生成mst文件都是 ...
- 【甄选靶场】Vulnhub百个项目渗透——项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取)
Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取) 靶场地址
最新文章
- 吴恩达、谷歌、Facebook纷纷开源研究数据集
- matlab几种循环,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!
- Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的语言
- 14004.xilinx自动打包image.ub脚本
- 超全的软件测试工具大全
- 4、matplotlib中的子图相关subplot
- PSpice添加SPICE模型
- 《与孩子一起学编程》译者序
- 奥维地图数据格式_奥维地图导入文件显示 奥维地图支持什么格式文件
- rdkit Recap、BRICS分子片段拆分与合成
- 诺基亚3090微信java,适合Asha系列,微信登陆诺基亚S40平台
- 你有梦想吗?华为云学院助你实现梦想
- 电商购物评论的情感分析
- [OpenCV实战]1 基于深度学习识别人脸性别和年龄
- kaldi理解WFST,HCLG,lattice
- [音乐心情]高品位精品音乐:百听不厌的醉人曲调欣赏
- 计算机按键上不上去,键盘打不了字按什么键调
- mysql 5.7.23用户权限_MySQL权限的详细解答
- 【总结】斜率优化DP
- 一股脑追中台就好比没看完阴阳师拍了晴雅集
热门文章
- Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败(转载)...
- 如何在CSDN中发布博客
- DynamipsGUI_2.8_CN 最新版
- Windows环境下redis的集群部署
- discuz常用代码
- linux笔记(8):东山哪吒D1H移植lvgl(HDMI输出)
- c语言编程求macd最大值,2010年天津工业大学耀华杯计算机竞赛试卷(C语言全卷带答案).doc...
- LTE RACH
- 纯css3实现圆环占比图
- 一致连续(uniform continuous)