pandas 筛选
- t={
- "age": [, , np.nan, , np.nan, ],
- "city": ["BeiJing", "ShangHai", "GuangZhou", "ShenZhen", 'BeiJing', "ShangHai"],
- "sex": [None, "male", "female", "male", np.nan, "unknown"],
- "birth": ["2000-02-10", "1988-10-17", None, "1978-08-08", np.nan, "1988-10-17"],
- "score":[,,,,,],
- "naem":['sdf','aa','bb','tt','ere','tt'],
- "name":['sdf 11','aa 22','bb 33','tt 44','ere 55','tt 66']
- }
- df =DataFrame(t)
- index = pd.Index(data=["Tom", "Bob", "Mary", "James", "Andy", "Alice"], name="name")
- data = {
- "age": [, , np.nan, , np.nan, ],
- "city": ["Bei Jing ", "Shang Hai ", "Guang Zhou", "Shen Zhen", np.nan, " "],
- "income": [None, , ,, np.nan, ],
- "sex": [None, "male", "female", "male", np.nan, "unknown"],
- "birth": ["2000-02-10", "1988-10-17", None, "1978-08-08", np.nan, "1988-10-17"]
- }
- df = pd.DataFrame(data=data, index=index)
- print(df.get('age1') ) #使用get,没有此列也不会报错
- print(df.get('age').get()) # 索引到具体的单元格
print(df['age'][1]) #索引到具体的单元格- print(df[::]) #每两行筛选 一次数据
- print(df[::-]) #行逆序
- print(df['age']) #筛选单列
- print(df[['age','sex']]) #筛选多列
- print(df.iloc[]) #筛选第一行
- print(df.iloc[, ]) #筛选出单元格 第二行第一列的数据
- print(df.iloc[[, , ], ]) # 筛选出多行一列 第二行、第一行、第三行对应的第一列的数据
- print(df.iloc[:, :]) #切片,多行多列
- print(df.loc["Tom": "Mary"]) #多行
- print(df.loc[:, "age": "birth"]) # 多列
- # loc与iloc的区别: 通过名称来筛选时,传入的切片是左右都包含的
- print(df[~(df.sex == 'unknown')]) #取反
- print(df.loc[df.age > , ["age"]]) # 通过loc进行逻辑筛选
- print(df[df.sex.isin(["male", "female"])]) # 对几个常量进行筛选
- print(df[df.index.isin(["Bob"])]) # 索引也可以用 isin
- print(df[lambda x: x["age"] > ]) #通过函数进行筛选,必须是带有一个参数
- print(df.loc[lambda x: x.age > , lambda x: ["age"]])
- # ============
- user_info=df
- grouped = user_info.groupby(["sex", "age"]) # user_info.groupby(["sex", "age"], sort=False) groupby 会在操作过程中对数据进行排序。如果为了更好的性能,可以设置 sort=False
- print(grouped.groups)
- for name, group in grouped: # 遍历分组,如果是根据多个字段来分组的,每个组的名称是一个元组
- print("name: {}".format(name))
- print("group: {}".format(group))
- user_info.groupby(["sex", "age"]).get_group(("male", )) # 选择一个分组用 get_group
- rs=grouped["age"].agg(np.max) # 对分组后的某一列进行统计
- # 如果是根据多个键来进行聚合,默认情况下得到的结果是一个多层索引结构。可以设置参数 as_index=False 避免多层索引
- # 对已经有多层索引的对象可以通过reset_index ,去掉多层索引 rs.reset_index()
- grouped["income"].agg([np.sum, np.mean]).rename(columns={"sum": "income_sum", "mean": "income_mean"}) #一次进行多个聚合操作,并重命名统计结果
- grouped.agg({"age": np.mean, "income": np.sum}) # 不同列进行不同的聚合操作
- # 使用apply,通过带参数的函数对列进行处理
- def f1(ser, num=):
- return ser.nlargest(num).tolist() #
- print(grouped["income"].apply(f1))
- # 前面进行聚合运算的时候,得到的结果是一个以分组名作为索引的结果对象。虽然可以指定 as_index=False ,但是得到的索引也并不是元数据的索引。
- # 如果我们想使用原数组的索引的话,可以使用transform
- grouped = user_info.groupby("sex")
- print(grouped["income"].transform(np.mean))
- print(user_info.to_json()) #将dataframe转成json字符串
- data1 = {
- "name": ["Tom", "Bob"],
- "age": [, ],
- "city": ["Bei Jing ", "Shang Hai "]
- }
- df1 = pd.DataFrame(data=data1)
- data2 = {
- "name": ["Mary", "James"],
- "age": [, ],
- "city": ["Guang Zhou", "Shen Zhen"]
- }
- df2 = pd.DataFrame(data=data2)
- # append和concat实现的功能差不多
- print(df1.append(df2,ignore_index=True)) #ignore_index=True 是为了重新生成索引
- print(pd.concat([df1,df2],ignore_index=True))
- data2 = {"name": ["Bob", "Mary", "James", "Andy"],
- "sex": ["male", "female", "male", np.nan],
- "income": [, , , ]
- }
- df2 = pd.DataFrame(data=data2)
- #join和merge功能差不多
- print(pd.merge(df1, df2, on="name", how="outer")) #outer inner left right
- print(df1.join(df2.set_index("name"),on="name",how='outer'))
- # 两个 DataFrame 中需要关联的键的名称不一样,可以通过 left_on 和 right_on 来分别设置 pd.merge(df1, df2, left_on="name1", right_on="name2")
- # 两个DataFrame中都包含相同名称的字段时,可以设置参数 suffixes,默认 suffixes=('_x', '_y') 表示将相同名称的左边的DataFrame的字段名加上后缀 _x,右边加上后缀 _y
pandas 筛选的更多相关文章
- 【跟着stackoverflow学Pandas】Select rows from a DataFrame based on values in a column -pandas 筛选
最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...
- 【452】pandas筛选出表中满足另一个表所有条件的数据
参考:pandas筛选出表中满足另一个表所有条件的数据 参考:pandas:匹配两个dataframe 使用 pd.merge 来实现 on 表示查询的 columns,如果都有 id,那么这是很好的 ...
- pandas 筛选指定行或者列的数据
pandas主要的两个数据结构是:series(相当于一行或一列数据结构和DataFrame(相当于多行多列的一个表格数据机构). 原文:https://www.cnblogs.com/gangand ...
- Pandas 筛选操作
# 导入相关库 import numpy as np import pandas as pd 在数据处理过程中,经常会遇到要筛选不同要求的数据.通过 Pandas 可以轻松时间,这一篇我们来看下如何使 ...
- 使用pandas筛选出指定列值所对应的行
在pandas中怎么样实现类似mysql查找语句的功能: select * from table where column_name = some_value; pandas中获取数据的有以下几种方法 ...
- pandas筛选数据。
https://jingyan.baidu.com/article/0eb457e508b6d303f0a90572.html 假如我们想要筛选D列数据中大于0的行:df[df['D']>0] ...
- pandas筛选0,3,6开头的行
http://stackoverflow.com/questions/15325182/how-to-filter-rows-in-pandas-by-regex dbstk.loc[dbstk.ST ...
- pandas 筛选某一列最大值最小值 sort_values、groupby、max、min
高效方法: dfs[dfs['delta'].isnull()==False].sort_values(by='delta', ascending=True).groupby('Call_Number ...
- pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。
Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questi ...
随机推荐
- [转] 下载文件旁边附的MD5/SHA256等有什么用途?
在我们下载很多软件时,旁边会出现md5,sha1/sha256/sha512等一长串字符串,这些字符串是什么意义呢? 因为怕盗版或者怕软件被植入病毒或者插件等,要对软件的完整性做校验.步骤:先下载完软 ...
- 用easyui实现查询条件的后端传递并自动刷新表格的两种方法
用easyui实现查询条件的后端传递并自动刷新表格的两种方法 搜索框如下: 通过datagrid的load方法直接传递参数并自动刷新表格 通过ajax的post函数传递参数并通过loadData方法将 ...
- Flume和 Sqoop
Sqoop简介 Sqoop是一种旨在有效地在Apache Hadoop和诸如关系数据库等结构化数据存储之间传输大量数据的工具 原理: 将导入或导出命令翻译成Mapreduce程序来实现. 在翻译出的M ...
- AutoCAD ObjectARX 二次开发(2020版)--3,执行ARX文件--
上一节中我们在initApp()函数中,将helloWorld()函数注册给了CAD主程序,注册指令的字符串为“Hello”. void initApp() { acedRegCmds->add ...
- Storm大数据实时计算
大数据也是构建各类系统的时候一种全新的思维,以及架构理念,比如Storm,Hive,Spark,ZooKeeper,HBase,Elasticsearch,等等 storm,在做热数据这块,如果要做复 ...
- Openshift概念
Openshift是一个开源容器云平台,是一个基于主流的容器技术Docker和K8s构建的云平台.Openshift底层以Docker作为容器引擎驱动,以K8s作为容器编排引擎组件,并提供了开发语言, ...
- mybatis中参数为list集合时使用 mybatis in查询
mybatis中参数为list集合时使用 mybatis in查询 一.问题描述mybatis sql查询时,若遇到多个条件匹配一个字段,sql 如: select * from user where ...
- Java调用Http/Https接口(4)--HttpClient调用Http/Https接口
HttpClient是Apache HttpComponents项目下的一个组件,是Commons-HttpClient的升级版,两者api调用写法也很类似.文中所使用到的软件版本:Java 1.8. ...
- Flask框架 请求与响应 & 模板语法
目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...
- koa2--nodemailer实现邮箱验证
依赖包安装: /** * koa-bodyparser用于把formData数据解析到ctx.request.body * 通过ctx.request.body访问请求的参数 * koa-redis用 ...