1. t={
  2. "age": [, , np.nan, , np.nan, ],
  3. "city": ["BeiJing", "ShangHai", "GuangZhou", "ShenZhen", 'BeiJing', "ShangHai"],
  4. "sex": [None, "male", "female", "male", np.nan, "unknown"],
  5. "birth": ["2000-02-10", "1988-10-17", None, "1978-08-08", np.nan, "1988-10-17"],
  6. "score":[,,,,,],
  7. "naem":['sdf','aa','bb','tt','ere','tt'],
  8. "name":['sdf 11','aa 22','bb 33','tt 44','ere 55','tt 66']
  9. }
  10. df =DataFrame(t)
  11. index = pd.Index(data=["Tom", "Bob", "Mary", "James", "Andy", "Alice"], name="name")
  12.  
  13. data = {
  14. "age": [, , np.nan, , np.nan, ],
  15. "city": ["Bei Jing ", "Shang Hai ", "Guang Zhou", "Shen Zhen", np.nan, " "],
  16. "income": [None, , ,, np.nan, ],
  17. "sex": [None, "male", "female", "male", np.nan, "unknown"],
  18. "birth": ["2000-02-10", "1988-10-17", None, "1978-08-08", np.nan, "1988-10-17"]
  19. }
  20.  
  21. df = pd.DataFrame(data=data, index=index)
  22.  
  23. print(df.get('age1') ) #使用get,没有此列也不会报错
  24. print(df.get('age').get()) # 索引到具体的单元格
    print(df['age'][1]) #索引到具体的单元格
  25. print(df[::]) #每两行筛选 一次数据
  26. print(df[::-]) #行逆序
  27. print(df['age']) #筛选单列
  28. print(df[['age','sex']]) #筛选多列
  29. print(df.iloc[]) #筛选第一行
  30. print(df.iloc[, ]) #筛选出单元格 第二行第一列的数据
  31. print(df.iloc[[, , ], ]) # 筛选出多行一列 第二行、第一行、第三行对应的第一列的数据
  32. print(df.iloc[:, :]) #切片,多行多列
  33. print(df.loc["Tom": "Mary"]) #多行
  34. print(df.loc[:, "age": "birth"]) # 多列
  35. # loc与iloc的区别: 通过名称来筛选时,传入的切片是左右都包含的
  36. print(df[~(df.sex == 'unknown')]) #取反
  37. print(df.loc[df.age > , ["age"]]) # 通过loc进行逻辑筛选
  38. print(df[df.sex.isin(["male", "female"])]) # 对几个常量进行筛选
  39. print(df[df.index.isin(["Bob"])]) # 索引也可以用 isin
  40. print(df[lambda x: x["age"] > ]) #通过函数进行筛选,必须是带有一个参数
  41. print(df.loc[lambda x: x.age > , lambda x: ["age"]])
  42. # ============
  43. user_info=df
  44. grouped = user_info.groupby(["sex", "age"]) # user_info.groupby(["sex", "age"], sort=False) groupby 会在操作过程中对数据进行排序。如果为了更好的性能,可以设置 sort=False
  45. print(grouped.groups)
  46. for name, group in grouped: # 遍历分组,如果是根据多个字段来分组的,每个组的名称是一个元组
  47. print("name: {}".format(name))
  48. print("group: {}".format(group))
  49. user_info.groupby(["sex", "age"]).get_group(("male", )) # 选择一个分组用 get_group
  50.  
  51. rs=grouped["age"].agg(np.max) # 对分组后的某一列进行统计
  52. # 如果是根据多个键来进行聚合,默认情况下得到的结果是一个多层索引结构。可以设置参数 as_index=False 避免多层索引
  53. # 对已经有多层索引的对象可以通过reset_index ,去掉多层索引 rs.reset_index()
  54. grouped["income"].agg([np.sum, np.mean]).rename(columns={"sum": "income_sum", "mean": "income_mean"}) #一次进行多个聚合操作,并重命名统计结果
  55. grouped.agg({"age": np.mean, "income": np.sum}) # 不同列进行不同的聚合操作
  56. # 使用apply,通过带参数的函数对列进行处理
  57. def f1(ser, num=):
  58. return ser.nlargest(num).tolist() #
  59. print(grouped["income"].apply(f1))
  60. # 前面进行聚合运算的时候,得到的结果是一个以分组名作为索引的结果对象。虽然可以指定 as_index=False ,但是得到的索引也并不是元数据的索引。
  61. # 如果我们想使用原数组的索引的话,可以使用transform
  62. grouped = user_info.groupby("sex")
  63. print(grouped["income"].transform(np.mean))
  64.  
  65. print(user_info.to_json()) #将dataframe转成json字符串
  66. data1 = {
  67. "name": ["Tom", "Bob"],
  68. "age": [, ],
  69. "city": ["Bei Jing ", "Shang Hai "]
  70. }
  71. df1 = pd.DataFrame(data=data1)
  72. data2 = {
  73. "name": ["Mary", "James"],
  74. "age": [, ],
  75. "city": ["Guang Zhou", "Shen Zhen"]
  76. }
  77. df2 = pd.DataFrame(data=data2)
  78. # append和concat实现的功能差不多
  79. print(df1.append(df2,ignore_index=True)) #ignore_index=True 是为了重新生成索引
  80. print(pd.concat([df1,df2],ignore_index=True))
  81. data2 = {"name": ["Bob", "Mary", "James", "Andy"],
  82. "sex": ["male", "female", "male", np.nan],
  83. "income": [, , , ]
  84. }
  85. df2 = pd.DataFrame(data=data2)
  86. #join和merge功能差不多
  87. print(pd.merge(df1, df2, on="name", how="outer")) #outer inner left right
  88. print(df1.join(df2.set_index("name"),on="name",how='outer'))
  89. # 两个 DataFrame 中需要关联的键的名称不一样,可以通过 left_on 和 right_on 来分别设置 pd.merge(df1, df2, left_on="name1", right_on="name2")
  90. # 两个DataFrame中都包含相同名称的字段时,可以设置参数 suffixes,默认 suffixes=('_x', '_y') 表示将相同名称的左边的DataFrame的字段名加上后缀 _x,右边加上后缀 _y

pandas 筛选的更多相关文章

  1. 【跟着stackoverflow学Pandas】Select rows from a DataFrame based on values in a column -pandas 筛选

    最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...

  2. 【452】pandas筛选出表中满足另一个表所有条件的数据

    参考:pandas筛选出表中满足另一个表所有条件的数据 参考:pandas:匹配两个dataframe 使用 pd.merge 来实现 on 表示查询的 columns,如果都有 id,那么这是很好的 ...

  3. pandas 筛选指定行或者列的数据

    pandas主要的两个数据结构是:series(相当于一行或一列数据结构和DataFrame(相当于多行多列的一个表格数据机构). 原文:https://www.cnblogs.com/gangand ...

  4. Pandas 筛选操作

    # 导入相关库 import numpy as np import pandas as pd 在数据处理过程中,经常会遇到要筛选不同要求的数据.通过 Pandas 可以轻松时间,这一篇我们来看下如何使 ...

  5. 使用pandas筛选出指定列值所对应的行

    在pandas中怎么样实现类似mysql查找语句的功能: select * from table where column_name = some_value; pandas中获取数据的有以下几种方法 ...

  6. pandas筛选数据。

    https://jingyan.baidu.com/article/0eb457e508b6d303f0a90572.html 假如我们想要筛选D列数据中大于0的行:df[df['D']>0] ...

  7. pandas筛选0,3,6开头的行

    http://stackoverflow.com/questions/15325182/how-to-filter-rows-in-pandas-by-regex dbstk.loc[dbstk.ST ...

  8. pandas 筛选某一列最大值最小值 sort_values、groupby、max、min

    高效方法: dfs[dfs['delta'].isnull()==False].sort_values(by='delta', ascending=True).groupby('Call_Number ...

  9. pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。

    Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questi ...

随机推荐

  1. [转] 下载文件旁边附的MD5/SHA256等有什么用途?

    在我们下载很多软件时,旁边会出现md5,sha1/sha256/sha512等一长串字符串,这些字符串是什么意义呢? 因为怕盗版或者怕软件被植入病毒或者插件等,要对软件的完整性做校验.步骤:先下载完软 ...

  2. 用easyui实现查询条件的后端传递并自动刷新表格的两种方法

    用easyui实现查询条件的后端传递并自动刷新表格的两种方法 搜索框如下: 通过datagrid的load方法直接传递参数并自动刷新表格 通过ajax的post函数传递参数并通过loadData方法将 ...

  3. Flume和 Sqoop

    Sqoop简介 Sqoop是一种旨在有效地在Apache Hadoop和诸如关系数据库等结构化数据存储之间传输大量数据的工具 原理: 将导入或导出命令翻译成Mapreduce程序来实现. 在翻译出的M ...

  4. AutoCAD ObjectARX 二次开发(2020版)--3,执行ARX文件--

    上一节中我们在initApp()函数中,将helloWorld()函数注册给了CAD主程序,注册指令的字符串为“Hello”. void initApp() { acedRegCmds->add ...

  5. Storm大数据实时计算

    大数据也是构建各类系统的时候一种全新的思维,以及架构理念,比如Storm,Hive,Spark,ZooKeeper,HBase,Elasticsearch,等等 storm,在做热数据这块,如果要做复 ...

  6. Openshift概念

    Openshift是一个开源容器云平台,是一个基于主流的容器技术Docker和K8s构建的云平台.Openshift底层以Docker作为容器引擎驱动,以K8s作为容器编排引擎组件,并提供了开发语言, ...

  7. mybatis中参数为list集合时使用 mybatis in查询

    mybatis中参数为list集合时使用 mybatis in查询 一.问题描述mybatis sql查询时,若遇到多个条件匹配一个字段,sql 如: select * from user where ...

  8. Java调用Http/Https接口(4)--HttpClient调用Http/Https接口

    HttpClient是Apache HttpComponents项目下的一个组件,是Commons-HttpClient的升级版,两者api调用写法也很类似.文中所使用到的软件版本:Java 1.8. ...

  9. Flask框架 请求与响应 & 模板语法

    目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...

  10. koa2--nodemailer实现邮箱验证

    依赖包安装: /** * koa-bodyparser用于把formData数据解析到ctx.request.body * 通过ctx.request.body访问请求的参数 * koa-redis用 ...