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 相关文章推荐
一个基于flask的web应用诞生(1)
Apr 11 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
Python模拟用户登录验证
Sep 11 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
python快排算法详解
Mar 04 Python
Python简单处理坐标排序问题示例
Jul 11 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
Python实现CNN的多通道输入实例
Jan 17 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
python接入支付宝的实例操作
Jul 20 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
Apr 16 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 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
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
php的4种常见运行方式
2015/03/20 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
php验证码实现代码(3种)
2015/09/07 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
解决python写的windows服务不能启动的问题
2014/04/15 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
Ubuntu下安装PyV8
2016/03/13 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
python绘制多个子图的实例
2019/07/07 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
python Canny边缘检测算法的实现
2020/04/24 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
民主评议政风行风整改方案
2014/09/17 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书