python之pandas数据筛选和csv操作

本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明1.数据筛选(1)单条件筛选(2)多条件筛选可以使用&(并)与|(

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

  本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明

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://blog.csdn.net/liuweiyuxiang/article/details/78471036

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,:])
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120058.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • if python用法_for循环语句

    if python用法_for循环语句今天,我们将学习Python中if语句的基本使用。if在Python中用作某个条件或值的判断,格式为:if条件: 执行语句1else: 执行语句2else是当条件不成立时运行的代码。我们先来看个例子,程序判断天气情况并输出是否要带伞:weather=input(“今日天气是:”)ifweather==”雨天” print(“今天出门需要带伞”)else: print(“今天出门不需要带伞”)运行代码,输入雨天会提示要带伞。if语句中用的两个“=”是什么呢

    2022年9月26日
    0
  • 迅雷php文件怎么打开_php生成短链接

    迅雷php文件怎么打开_php生成短链接我正在使用TCPDF来创建简单的pdf文档.我正在创建一个页面并使用下面的代码添加链接$pdf->addTOCPage();$link=$pdf->AddLink();$pdf->SetLink($link,0,-1);现在链接设置成功.但是要导航到该页面我应该添加什么?我试过下面的代码,但它什么也没做,<ahref=“#Whattoaddhere”style…

    2022年9月7日
    0
  • 论文之前能在万方检索到,现在搜不到了_resnet论文

    论文之前能在万方检索到,现在搜不到了_resnet论文转自:https://blog.csdn.net/xuanwu_yan/article/details/75042456方法我们回顾一下ResNet,大意就是本层的激活值与本层的输入,作为本层的输出。换一种方式理解,第ll层的激活值不仅仅影响l+1l+1层,而且还影响l+2l+2层。那么由此及广,我们可不可以让第l层的激活值一直影响到第l+kl+k层呢?这样就有了本文的基本思想,稠密就是从这里产生…

    2022年9月26日
    0
  • PAT_考试技巧[通俗易懂]

    1.坑点:爆int,请用longlong如1104SumofNumberSegments(20分)

    2022年4月11日
    56
  • git clone指定分支

    git clone指定分支技术背景Git是代码版本最常用的管理工具,此前也写过一篇介绍Git的基本使用的博客,而本文介绍一个可能在特定场景下能够用到的功能–直接拉取指定分支的内容。GitClone首先看一下如果我们按照常规的操作去拉取一个Gitee的代码仓,是什么样的效果:$gitclonehttps://gitee.com/mindspore/mindscience.git正克隆到’mindsci…

    2022年7月21日
    23
  • 广州病例详细地址_广州病例轨迹

    广州病例详细地址_广州病例轨迹为什么WScript.CreateObject(WScript.Shell)无法执行━━━━━━━━━━━━━━━━━━━━━━━━━━源VBS程序∶DimtSett=WScript.CreateObject(“WScript.Shell”)Sett=NothingWScript.Quit(0)运行后出现错误:行:2错误:无法找到名为”WScrip

    2025年5月29日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号