pandas dataframe可以实现SQL中的count case吗?
谢邀
答案是完全可以,除此之外,pandas还提供各种复杂的表格数据操作,我们看看下面的例子
pandaspandas官网:/
Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。pandas两个主要的数据结构包括DataFrame和Series。
DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
Series是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。
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)
统计每个domain出现的次数
#统计name中每个名称的个数print(frame.groupby("domain")["domain"].count())
统计id和domain完全相同数据的个数(等价于sql中的联合查询)
#联合id和domain进行统计print(frame.groupby(["id","domain"])["domain"].count())
统计不重复的domain
#统计不重复domianprint(frame.domain.unique())
统计age大于10的name
#筛选出符合条件的dataframe
print(frame.where(frame["age"] > 10).dropna())
#统计domain出现的次数
print(frame.where(frame["age"] > 10).dropna().groupby("domain")["domain"].count())
实际上pandas能做的事情还有很多很多,我这里只是简单的列举了一部分而已,它还可以实现很多很复杂的操作,相对来说pandas对数据的操作要比sql操作表格简单的多,pandas还提供了一个to_sql方法可以去操作数据库,感兴趣的同学可以去了解一下。
我以前在博客上写过一些pandas的入门教程,如果有兴趣更进一步了解可以去看看我博客的文章