本文数据可在此处下载,密码:vwy3

# 加载数据

import pandas as pd

# 数据是之前在cnblog上抓取的部分文章信息

df = pd.read_csv('./data/SQL测试用数据_20200325.csv',encoding='utf-8')

df.head(3)

筛选列

相当于SQL中的select

所有列

df

df[:]

某一列

df.col_name 列名必须是字符串格式且不含空格

df['col_name']

第N列,

df.iloc[:,[1,3,4]]

先获取列名列表,再指定index,df[df.columns[0]]

选择多列

指定列名称,df['col_1','col_2'],或者 df.loc[:,['col_1','col_2']]

指定列顺序,df[df.columns[1,3,4]] 或 df.iloc[:,[1,3,4]]

列名称符合某种规则,比如相同的前缀,那么可以先得到列名称,然后进行判断筛选相应的列名

df.filter(regex='^h') 以h开头的字段名称对应的列

df.filter(regex='^h')

筛选行

相当于SQL中的where

按行的顺序

前3行,df_data.head(3)

后3行,df_data.tail(3)

指定index,

选择行df.iloc[:3] 和head(3)的效果是一样的

选择列 df.iloc[:,:3] 选择前3列

单元格定位 df.iloc[0,1] 选择第1行第2列的单元格数值

选择区域,df.iloc[[:3],[:3]] 前3行,前3列

指定行index,df.loc[[row_index],[col_names]]

# 选择前3行

df.iloc[:3]

# 选取列 href的数据,只取index为1,3,5的数据,

df.loc[[1,3,5],['href']]

抽样(行)

df.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

n 样本数量

frac 比例

replace 是否放回,一般是无放回抽样(函数默认值)

weight 权重

# 随机抽取3行数据

df.sample(n=3)

# 随机抽5‰的行

df.sample(frac=0.005)

最大(小)值

# 阅读量最低的5篇文章的信息

df.nsmallest(5,'read_cnt')

# 阅读量最高的5篇文章的信息

df.nlargest(5,'read_cnt')

按值的判断

字符串匹配,包括精确匹配和模糊匹配

数值区间

=,>,<(值的比较)

# 筛选博客名称为'wupeixuan'的行

# 注意对标题字母统一转成小写

df[df['blog_name'] == 'wupeixuan']

# .query方法

df.query('blog_name == "wupeixuan"')

# 阅读数大于5000的文章信息

df[df['read_cnt'] > 5000]

# 阅读量在1000-5000这个区间的文章数量

df[(df['read_cnt'] >= 1000) & (df['read_cnt'] <= 5000)].shape[0]

# .query方法

df.query('1000 <= read_cnt <= 5000').shape[0]

输出:

65

df.query看起来和sql更相似,也更直观

该方法对于如下操作是有效的:

=,>,< ==

and,or and, or, &, |

not 只能应用到bool值的列

in,not in in, not in

注意点:

字符串取值要用双引号

逻辑关键字

and,or,not(或且非)

# 星期1发布且(&)阅读量>5000的文章

df[(df['weekday']==1) & (df['read_cnt']>5000)]

df.query('weekday==1 and read_cnt>5000')

df.query('weekday==1 & read_cnt>5000')

# 标题中含有'5000' 或(|) 阅读量>5000的文章

df[(df['title'].str.contains('5000')) | (df['read_cnt']>5000)]

# 不看阅读量<5000的文章

# 也就是只看阅读量>=5000的文章

df[~(df['read_cnt']<5000)]

like(字符串匹配)

包含某字符,相当于SQL中的%like%

# 筛选标题中含有‘Jupyter’的行

# 如果是英文字母可以考虑对标题字母统一转成小写或大写

df[df['title'].str.contains('Jupyter')]

# 字符串的正则匹配

# 筛选标题中同时含有'Python'和'数据分析'的行

df[df['title'].apply(lambda x:x.lower()).str.contains('python.*数据分析')]

# 筛选标题中含有'Kmeans'或'梯度下降'的行

df[df['title'].str.contains('Kmeans|梯度下降')]

# 组合用法

df[df['title'].str.contains('机器学习.*(Kmeans|梯度下降)')]

in(取值的集合)

# in

# 阅读量刚好是333或者999的文章信息

df[df['read_cnt'].isin([333,999])]

# query方法

df.query('read_cnt in [333,999]')

# not in

# ~ 和 .isin组合集合

# 只看星期天的发文数量

df[~df['weekday'].isin([1,2,3,4,5,6])].shape[0]

df.query('weekday not in [1,2,3,4,5,6]').shape[0]

python pandas筛选数据_Python基础 | pandas中数据的筛选(index subset)相关推荐

  1. python 更新数据库历史_python 实现数据库中数据添加、查询与更新的示例代码

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

  2. python代码中怎么增加数据_python 实现数据库中数据添加、查询与更新的示例代码...

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

  3. python读取图片分辨率_python获取网页中所有图片并筛选指定分辨率的方法

    压测时,图片太少,想着下载网页中的图片,然后过滤指定分辨率,但网页中指定分辨率的图片太少了(见下) 后使用格式工厂转换图片 import urllib.request # 导入urllib模块 imp ...

  4. 打通数据价值链,百分点数据科学基础平台实现数据到决策的价值转换 | 爱分析调研

    随着企业数据规模的大幅增长,如何利用数据.充分挖掘数据价值,服务于企业经营管理成为当下企业数字化转型的关键. 如何挖掘数据价值?企业需要一步步完成数据价值链条的多个环节,如数据集成.数据治理.数据建模 ...

  5. TF学习——TF数据读取:TensorFlow中数据读这三张图片的5个epoch +把读取的结果重新存到read 文件夹中

    TF学习--TF数据读取:TensorFlow中数据读这三张图片的5个epoch +把读取的结果重新存到read 文件夹中 目录 实验展示 代码实现 实验展示 代码实现 1.如果设置shuffle为T ...

  6. python dataframe增加一行_python - 在pandas.DataFrame中添加一行

    python - 在pandas.DataFrame中添加一行 据我所知,pandas旨在加载完全填充的DataFrame,但我需要创建一个空的DataFrame,然后逐个添加行.做这个的最好方式是什 ...

  7. python pandas处理excel 统计数据_python使用pandas处理excel数据

    使用Python Pandas库读取excel文件(.xlsx, .xls). 使用pandas的 read_excel()方法来读取excel数据,可以读取第一个sheet,指定的sheet,多个s ...

  8. python pandas 条件求和_python 使用pandas计算累积求和的方法

    python 使用pandas计算累积求和的方法 使用pandas下的cumsum函数 cumsum:计算轴向元素累积加和,返回由中间结果组成的数组.重点就是返回值是"由中间结果组成的数组& ...

  9. python处理一亿条数据_Python基础数据处理库

    Numpy 简介 import numpy as np Numpy是应用Python进行科学计算的基础库.它的功能包括多维数组.基本线性代数.基本统计计算.随机模拟等.Numpy的核心功能是ndarr ...

最新文章

  1. 如何在 Windows 7 中使用多线程加快文件复制[转]
  2. python是基于什么语言开发-python是哪个国家的人开发的语言
  3. hackme Guess-the-Number 寒假逆向生涯(4/100)
  4. Tensorflow 错误总结:ImportError: cannot import name add_newdocs.
  5. 奉献一波鹅厂的面经!纪念最后的校招!| 掘金技术征文
  6. eclipse中图片大小用什么单位_建筑工程行业中各个单位都是什么样的关系?
  7. ajax请求 apend,jsp如何获取ajax append的数据?
  8. 牛人和普通人的区别在于思维方式!
  9. 《Cortex-M0权威指南》之体系结构---嵌套中断控制器(NVIC)
  10. Sentinel服务熔断只配置fallback_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0050
  11. 面试题 数组长度可否赋值
  12. error和warning指令
  13. The server of Apache (四)——配置防盗链和隐藏版本信息
  14. SQL:解决PostgreSQL数据库传输出现ERROR: invalid byte sequence for encoding “UTF8“: 0xe5 0x9b 0x20
  15. 进程介绍(理论部分)
  16. 解决三星PM981硬盘无法正常安装黑苹果的问题(第一版)
  17. 用计算机解一元二次,请简述如何用科学计算器解一元二次方程
  18. 推荐一个项目管理工具:TAPD
  19. html里面超链接alt_怎样用HTML代码在图片插入超链接
  20. Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)...

热门文章

  1. 七尺男惨遭毒手变侏儒 痴情女真情不变仍同居——名侦探柯南!超级邪恶的动画...
  2. vue2.0使用ttf字体不生效
  3. 第四章 云计算的商业案例
  4. EXCEL表格怎么设置自动年月日星期
  5. Cannot determine value type from string ‘xxx‘
  6. 超低价纯流量卡不限速?三招教你拆穿商家套路
  7. Linux命令之strace命令
  8. 华杰智控PLC远程模块
  9. Unity3d C#模仿实现王者荣耀英雄禁用灰化(黑白化)功能含工程源码
  10. vue keep-live使用