pandas dataframe可以实现SQL中的count case吗?

科技网编2023-03-10 12:431850

谢邀

答案是完全可以,除此之外,pandas还提供各种复杂的表格数据操作,我们看看下面的例子

pandaspandas官网:/

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。pandas两个主要的数据结构包括DataFrame和Series。

DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。

Series是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。

pandas dataframe可以实现SQL中的count case吗?

DataFrame接下来我们用dataframe来实现一些对表格的count操作

创建一个dataframe的数据,pandas中的dataframe等价于sql中的table

from pandas import DataFrame#创建一个表格数据,对于数据库中的tabledata = { "id":[1,1,1,2,2,2,2,3,3], "domain":["vk.com","vk.com","twitter.com","vk.com","facebook.com", "vk.com","google.com","twitter.com","vk.com"], "age":[5,6,7,8,9,10,11,12,13]}frame = DataFrame(data)print(frame)

pandas dataframe可以实现SQL中的count case吗?

统计每个domain出现的次数

#统计name中每个名称的个数print(frame.groupby("domain")["domain"].count())

pandas dataframe可以实现SQL中的count case吗?

统计id和domain完全相同数据的个数(等价于sql中的联合查询)

#联合id和domain进行统计print(frame.groupby(["id","domain"])["domain"].count())

pandas dataframe可以实现SQL中的count case吗?

统计不重复的domain

#统计不重复domianprint(frame.domain.unique())

pandas dataframe可以实现SQL中的count case吗?

统计age大于10的name

#筛选出符合条件的dataframe

print(frame.where(frame["age"] > 10).dropna())

pandas dataframe可以实现SQL中的count case吗?

#统计domain出现的次数

print(frame.where(frame["age"] > 10).dropna().groupby("domain")["domain"].count())

pandas dataframe可以实现SQL中的count case吗?

实际上pandas能做的事情还有很多很多,我这里只是简单的列举了一部分而已,它还可以实现很多很复杂的操作,相对来说pandas对数据的操作要比sql操作表格简单的多,pandas还提供了一个to_sql方法可以去操作数据库,感兴趣的同学可以去了解一下。

我以前在博客上写过一些pandas的入门教程,如果有兴趣更进一步了解可以去看看我博客的文章

评论区