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 筛选的更多相关文章

  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. 前端与算法 leetcode 189. 旋转数组

    目录 # 前端与算法 leetcode 189. 旋转数组 题目描述 概要 提示 解析 算法 # 前端与算法 leetcode 189. 旋转数组 题目描述 189. 旋转数组 概要 把他当做一到简单 ...

  2. Java程序员经典面试题+答案(全)

    这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试. 关注公众号[Java典籍]免费赠送一套Java入门视频教程一套! ...

  3. 【转帖】Flink 核心技术浅析(整理版)

    Flink 核心技术浅析(整理版) https://www.cnblogs.com/swordfall/p/10612404.html 分类: Flink undefined 1. Flink简介 A ...

  4. Word章 节标题自动编号并由此自动生成目录 -- 含视频教程(1)

    1. 写论文之前事先调好 写论文的时候,难免要用到章节,如何实现下图的效果呢? 其实结合用好两个功能就行了: >> 视频教程链接:B站,速度快,清晰 事先调好,可以给后续工作带来很多便利, ...

  5. java中四种权限修饰符区别

    总的概括:public > protected > (default) > private 细分见下表格: 权限修饰符 public protected (default) priv ...

  6. InheritedWidget and screen

    self: import 'package:flutter/material.dart'; class GrantScreen { static double _width, _height; sta ...

  7. 房地产propretie财产

    property 1. 财产:所有物(不可数); 地产, 房地产 He has a large property in the county. 他在这个县有一大宗地产. 1.Propretie obs ...

  8. nepenthes用法

    安装 # apt-get install nepenthes 配置文件 # vi submit-file.conf submit-file { path "/var/lib/nepenthe ...

  9. 升级tinyhttpd-0.1.0,让其支持网页显示图像

    tinyhttpd是学习http协议非常好的工具,但是由于其过于简单,不支持在网页上显示图片,所以我改了一些代码,让tinyhttpd可以现实图像,供新手一起学习和熟悉http协议,ubuntu14. ...

  10. Word2Vec算法简介

    一.简介 word2vec是Google在2003年开源的一款将词表征为实数值向量的高效算法,采用的模型有CBOW[Continuous Bag-Of-Words 连续的词袋模型]和Skip-Gram ...