欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python数据分析之pandas(3)

程序员文章站 2022-06-23 09:36:02
python数据分析之pandas(3)前言今天来说说pandas的一些数据结构,主要是一些查询方法,包括loc、iloc、where、query等方法,本人最喜欢的查询方式是iloc,它是根据索引来进行的查询。但是loc既能查询,也能够覆盖写入,也是一个很棒的方法,而它主要是根据标签来查询的。开始......

python数据分析之pandas(3)

前言

今天来说说pandas的一些数据结构,主要是一些查询方法,包括loc、iloc、where、query等方法,本人最喜欢的查询方式是iloc,它是根据索引来进行的查询。但是loc既能查询,也能够覆盖写入,也是一个很棒的方法,而它主要是根据标签来查询的。

开始

读取数据

和往常一样,我们需要先读取数据,然后才能对数据进行操作和分析

df = pd.read_csv("../pandas/ant-learn-pandas-master/datas/beijing_tianqi/beijing_tianqi_2018.csv")

python数据分析之pandas(3)
数据读取完毕后,就开始我们今天的学习。之前提及了一下loc方法既能查询数据,还可以覆盖写入,现在就来展示一下吧。

df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')

python数据分析之pandas(3)
先解释一下这个语句的功能,这两个语句主要是把bWendu和yWendu两列的“℃”这个单位去掉,用replace方法实现。然后顺便将它们的格式转换为“int32”类型。这里要注意以下的是“str”这个方法,它只能对字符串使用,不能对别的类型进行操作,不然会报错。
接下来对 loc() 方法进行一下解释,它可以输入两个参数,第一个参数是index(即行标签),第二个参数是column(即列标签)。可以进行精准定位,同时也可以通过切片进行多行查找。接下来就展示一下吧,它神奇的用法。

使用单个label值查询数据

df.loc['2018-01-03', 'bWendu']	# 得到单个值,两个参数都是单个数据,即为精准查找,返回一个值。
2
df.loc['2018-01-03', ['bWendu', 'yWendu']]	# 如果有一个参数为多个数据,得到一个Series
bWendu     2
yWendu    -5

loc通过输入行和列的标签,进行不同的查询,而它返回的结果根据它的参数不同而返回不同的类型。都为一个查询参数,则返回一个精确的值,至多一个参数有多个查询参数,则返回一个series。而iloc则是输入索引号,简单来说就是数字,就和数组的查询一样,上面的查询如果换成iloc方法则是:

df.iloc[2, 0]
df.iloc[2, [0, 1]]
它们返回的结果一样。

使用值列表批量查询

除了进行单个查找,还可以进行批量处理,同时输入多个查询参数或者使用切片参数。

df.loc[['2018-01-03','2018-01-04','2018-01-05'], 'bWendu'] # 得到Series
ymd
2018-01-03    2
2018-01-04    0
2018-01-05    3
df.loc[['2018-01-03','2018-01-04','2018-01-05'], ['bWendu', 'yWendu']]	# 得到DataFrame
		bWendu	yWendu
ymd		
2018-01-03	2	-5
2018-01-04	0	-8
2018-01-05	3	-6

上面讲到了一个参数有多个查询值,如果两个参数都有多个查询值,就会返回一个表格类型。我们通过python提供的切片能够实现更加简单的操作,可以将上述代码简化为:

# 行index按区间
df.loc['2018-01-03':'2018-01-05', 'bWendu']
# 列index按区间
df.loc['2018-01-03', 'bWendu':'fengxiang']
# 行和列都按区间查询
df.loc['2018-01-03':'2018-01-05', 'bWendu':'fengxiang']

这些都是loc方法能够进行的操作,单个查询,批量查询,区间查询,我们能够很方便的分析我们需要的数据。而iloc方法则是将loc中的标签换成索引号,同时loc的操作iloc同样的具有。

使用条件表达式查询

df.loc[df["yWendu"]<-10, :] #返回数据
df["yWendu"]<-10	# 观察一下这里的boolean条件,返回True或False

查询“yWendu”小于-10的所有数据,就是检测每行"yWendu"是否小于-10,则如果是则df[“yWendu”]<-10返回True,就会输出这一行。
python数据分析之pandas(3)

复杂条件查询

## 查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据
df.loc[(df["bWendu"]<=30) & (df["yWendu"]>=15) & (df["tianqi"]=='晴') & (df["aqiLevel"]==1), :]

这个和上面的一样,只是加了联合查询,通过多个条件约束进行查询,本质都是一样的。我们还可以将后面的条件换成lambda表达式或者自己编写一个约束函数。可以自己多尝试一下。
python数据分析之pandas(3)

结尾

希望指出不足,共同探讨,共同进步,感谢观看。

本文地址:https://blog.csdn.net/qq_42909511/article/details/107299151