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. 移动端1px边框解决方案

    在retina屏中,像素比为2(iPhone6/7/8)或3(iPhone6Plus/7Plus/8Plus),1px的边框看起来比真的1px更宽. 使用伪类加transform的方式 元素本身不定义 ...

  2. Shadowing of static functions in Java

    class A { static void fun() { System.out.println("A.fun()"); } } class B extends A { stati ...

  3. zuul网关路由作用

    为了方便客户端调用微服务,所以设计出了网关.在微服务实例地址发生改变的情况下,客户端调用服务要能够不受影响. 网关可以完成的功能:路由,反向代理,日志记录,权限控制,限流 在本例子中 Eureka  ...

  4. 01.在Java中如何创建PDF文件

    1.简介 在这篇快速文章中,我们将重点介绍基于流行的iText和PdfBox库从头开始创建 PDF 文档. 2. Maven 依赖 <dependency> <groupId> ...

  5. TCP/IP详解 IP路由选择

    TCP/IP详解 IP路由选择 在本篇文章当中, 将通过例子来说明IP路由选择器过程 如图所示, 主机A与主机B分别是处在两个不同的子网当中, 中间通过一个路由连接. 如果主机A请求与主机B进行通行, ...

  6. nrm的安装和使用

    1.安装nodejs,下载地址,http://nodejs.cn/download/,安装过程直接点击下一步即可 安装完成后cmd输入npm -v 查看当前安装的npm的版本,如下图提示所示则表示安装 ...

  7. 浅谈有趣的 //go: 指令

    前言 如果你平时有翻看源码的习惯,你肯定会发现.咦,怎么有的方法上面总是写着 //go: 这类指令呢.他们到底是干嘛用的? 今天我们一同揭开他们的面纱,我将简单给你介绍一下,它们都负责些什么 go:l ...

  8. Spring Security 解析(二) —— 认证过程

    Spring Security 解析(二) -- 认证过程   在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security .S ...

  9. SQL Injection (Blind)

    Low级别基于布尔的盲注思路 1.判断是否存在注入,注入是字符型还是数字型 2.猜解当前数据库名 3.猜解数据库中的表名 4.猜解表中的字段名 5.猜解数据 判断是否有sql注入 输入1.1’ and ...

  10. pandas-05 map和replace操作

    # pandas-05 map和replace操作 map可以做一个映射,对于操作大型的dataframe来说就非常方便了,而且也不容易出错.replace的作用是替换,这个很好理解. import ...