文章目录

  • 概括: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处理方法]相关推荐

  1. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

  2. [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站防护

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Python网络攻防基础知识.Python多线程.C段扫描和数据库编程, ...

  3. 计算机强制关机原理,解决PC常见问题 篇十六:究竟如何关机才是正确的姿势---关于“按电源键强制关机对硬件无危害”的...

    解决PC常见问题 篇十六:究竟如何关机才是正确的姿势---关于"按电源键强制关机对硬件无危害"的 2020-08-10 10:21:40 36点赞 186收藏 64评论 本文背景 ...

  4. Vue实战篇十六:导航菜单

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  5. 小鱼易连电脑版_生活多么美好 篇十六:我的桌面改造,有绿植,有小鱼,有大音箱...

    原标题:生活多么美好 篇十六:我的桌面改造,有绿植,有小鱼,有大音箱 生活多么美好 篇十六:我的桌面改造,有绿植,有小鱼,有大音箱 2020-11-06 22:13:312点赞1收藏1评论 想攒一台电 ...

  6. Python的学习(十六):对文件的操作

    Python的学习(十六):对文件的操作 编码格式的介绍 Python中的解释器使用的是Unicode(内存) .py文件在磁盘上使用UTF-8存储(外存) 如何修改文件格式?不写的话默认为UTF-8 ...

  7. 36.深度解密三十六:网络舆情监测之另类“免费监测”方法详解

    网络营销推广技术.技巧深度解密(三十六)指南: 1.本文档适合零基础以及互联网营销推广工作者,主要讲解免费网络舆情监测的问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律 ...

  8. Wix 安装部署教程(十六) -- 自动生成多语言文件

    Wix 安装部署教程(十六) -- 自动生成多语言文件 原文:Wix 安装部署教程(十六) -- 自动生成多语言文件 因为持续集成需要,所有项目编译完之后生成一个多语言的安装包.之前生成mst文件都是 ...

  9. 【甄选靶场】Vulnhub百个项目渗透——项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取)

    Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取) 靶场地址

最新文章

  1. 吴恩达、谷歌、Facebook纷纷开源研究数据集
  2. matlab几种循环,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!
  3. Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的语言
  4. 14004.xilinx自动打包image.ub脚本
  5. 超全的软件测试工具大全
  6. 4、matplotlib中的子图相关subplot
  7. PSpice添加SPICE模型
  8. 《与孩子一起学编程》译者序
  9. 奥维地图数据格式_奥维地图导入文件显示 奥维地图支持什么格式文件
  10. rdkit Recap、BRICS分子片段拆分与合成
  11. 诺基亚3090微信java,适合Asha系列,微信登陆诺基亚S40平台
  12. 你有梦想吗?华为云学院助你实现梦想
  13. 电商购物评论的情感分析
  14. [OpenCV实战]1 基于深度学习识别人脸性别和年龄
  15. kaldi理解WFST,HCLG,lattice
  16. [音乐心情]高品位精品音乐:百听不厌的醉人曲调欣赏
  17. 计算机按键上不上去,键盘打不了字按什么键调
  18. mysql 5.7.23用户权限_MySQL权限的详细解答
  19. 【总结】斜率优化DP
  20. 一股脑追中台就好比没看完阴阳师拍了晴雅集

热门文章

  1. Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败(转载)...
  2. 如何在CSDN中发布博客
  3. DynamipsGUI_2.8_CN 最新版
  4. Windows环境下redis的集群部署
  5. discuz常用代码
  6. linux笔记(8):东山哪吒D1H移植lvgl(HDMI输出)
  7. c语言编程求macd最大值,2010年天津工业大学耀华杯计算机竞赛试卷(C语言全卷带答案).doc...
  8. LTE RACH
  9. 纯css3实现圆环占比图
  10. 一致连续(uniform continuous)