pandas数据筛选和csv操作的实现方法


Posted in Python onJuly 02, 2019

1. 数据筛选

a b c
0 0 2 4
1 6 8 10
2 12 14 16
3 18 20 22
4 24 26 28
5 30 32 34
6 36 38 40
7 42 44 46
8 48 50 52
9 54 56 58

(1)单条件筛选

df[df['a']>30]
# 如果想筛选a列的取值大于30的记录,但是之显示满足条件的b,c列的值可以这么写
df[['b','c']][df['a']>30]
# 使用isin函数根据特定值筛选记录。筛选a值等于30或者54的记录
df[df.a.isin([30, 54])]

(2)多条件筛选

可以使用&(并)与| (或)操作符或者特定的函数实现多条件筛选

# 使用&筛选a列的取值大于30,b列的取值大于40的记录
df[(df['a'] > 30) & (df['b'] > 40)]

(3)索引筛选

a. 切片操作

df[行索引,列索引]或df[[列名1,列名2]]

#使用切片操作选择特定的行
df[1:4]
#传入列名选择特定的列
df[['a','c']]

b. loc函数

当每列已有column name时,用 df [ ‘a' ] 就能选取出一整列数据。如果你知道column names 和index,且两者都很好输入,可以选择 .loc同时进行行列选择。

In [28]: df.loc[0,'c']
Out[28]: 4

In [29]: df.loc[1:4,['a','c']]
Out[29]:
 a c
1 6 10
2 12 16
3 18 22
4 24 28

In [30]: df.loc[[1,3,5],['a','c']]
Out[30]:
 a c
1 6 10
3 18 22
5 30 34

c. iloc函数

如果column name太长,输入不方便,或者index是一列时间序列,更不好输入,那就可以选择 .iloc了,该方法接受列名的index,iloc 使得我们可以对column使用slice(切片)的方法对数据进行选取。这边的 i 我觉得代表index,比较好记点。

In [35]: df.iloc[0,2]
Out[35]: 4

In [34]: df.iloc[1:4,[0,2]]
Out[34]:
 a c
1 6 10
2 12 16
3 18 22

In [36]: df.iloc[[1,3,5],[0,2]]
Out[36]:
 a c
1 6 10
3 18 22
5 30 34

In [38]: df.iloc[[1,3,5],0:2]
Out[38]:
 a b
1 6 8
3 18 20
5 30 32

d. ix函数

ix的功能更加强大,参数既可以是索引,也可以是名称,相当于,loc和iloc的合体。需要注意的是在使用的时候需要统一,在行选择时同时出现索引和名称, 同样在同行选择时同时出现索引和名称。

df.ix[1:3,['a','b']]
Out[41]:
 a b
1 6 8
2 12 14
3 18 20

In [42]: df.ix[[1,3,5],['a','b']]
Out[42]:
 a b
1 6 8
3 18 20
5 30 32

In [45]: df.ix[[1,3,5],[0,2]]
Out[45]:
 a c
1 6 10
3 18 22
5 30 34

e. at函数

根据指定行index及列label,快速定位DataFrame的元素,选择列时仅支持列名。

In [46]: df.at[3,'a']
Out[46]: 18

f. iat函数

与at的功能相同,只使用索引参数

In [49]: df.iat[3,0]
Out[49]: 18

2. csv操作

csv文件内容

Supplier Name,Invoice Number,Part Number,Cost,Purchase Date
Supplier X,001-1001,2341,$500.00 ,1/20/14
Supplier X,001-1001,2341,$500.00 ,1/20/14
Supplier X,001-1001,5467,$750.00 ,1/20/14
Supplier X,001-1001,5467,$750.00 ,1/20/14
Supplier Y,50-9501,7009,$250.00 ,1/30/14
Supplier Y,50-9501,7009,$250.00 ,1/30/14
Supplier Y,50-9505,6650,$125.00 ,2002/3/14
Supplier Y,50-9505,6650,$125.00 ,2002/3/14
Supplier Z,920-4803,3321,$615.00 ,2002/3/14
Supplier Z,920-4804,3321,$615.00 ,2002/10/14
Supplier Z,920-4805,3321,$615.00 ,2/17/14
Supplier Z,920-4806,3321,$615.00 ,2/24/14

(1)csv文件读写

关于read_csv函数中的参数说明参考博客:https://3water.com/article/164445.htm

import pandas as pd

# 读写csv文件
df = pd.read_csv("supplier_data.csv")
df.to_csv("supplier_data_write.csv",index=None)

(2)筛选特定的行

#Supplier Nmae列中姓名包含'Z',或者Cost列中的值大于600
print(df[df["Supplier Name"].str.contains('Z')])
print(df[df['Cost'].str.strip('$').astype(float) > 600])
print(df.loc[(df["Supplier Name"].str.contains('Z'))|(df['Cost'].str.strip('$').astype(float) > 600.0),:])

#行中的值属于某个集合
li = [2341,6650]
print(df[df['Part Number'].isin(li)])
print(df.loc[df['Part Number'].astype(int).isin(li),:])

#行中的值匹配某个模式
print(df[df['Invoice Number'].str.startswith("001-")])

 (3)选取特定的列

#选取特定的列
#列索引值,打印1,3列
print(df.iloc[:,1:4:2])
#列标题打印
print(df.loc[:,["Invoice Number", "Part Number"]])
#选取连续的行
print(df.loc[1:4,:])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
Python 文件操作的详解及实例
Sep 18 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
Django项目创建到启动详解(最全最详细)
Sep 07 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
在python中修改.properties文件的操作
Apr 08 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 Python
Python基本的内置数据类型及使用方法
Apr 13 Python
Python列表与元组的异同详解
Jul 02 #Python
Pandas中resample方法详解
Jul 02 #Python
Python何时应该使用Lambda函数
Jul 02 #Python
Python Pandas分组聚合的实现方法
Jul 02 #Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 #Python
python flask框架实现重定向功能示例
Jul 02 #Python
python实现串口自动触发工作的示例
Jul 02 #Python
You might like
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
React快速入门教程
2017/01/17 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
实例讲解Python中函数的调用与定义
2016/03/14 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
Django入门使用示例
2017/12/12 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
深入解析神经网络从原理到实现
2019/07/26 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
如何基于python实现不邻接植花
2020/05/01 Python
python实现126邮箱发送邮件
2020/05/20 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
活动总结怎么写啊
2014/05/07 职场文书
爱的承诺书
2015/01/20 职场文书
个人工作表现自我评价
2015/03/06 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
校长新学期寄语2016
2015/12/04 职场文书
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers