python pandas 数据框 条件选取行列数据
来源:互联网 发布:什么是数据挖掘技术 编辑:程序博客网 时间:2024/05/17 08:57
原文:http://blog.csdn.net/u010770993/article/details/70312506
我们说excel好用,在处理大型数据表格的时候,excel可以非常方便地进行筛选。那么pandas是否有类似的功能呢?答案是肯定的。下面介绍的几个操作,返回的类型都是dataframe,因此可以进行嵌套操作,非常方便。
一、选取几列组成新的dataframe:
df = df[['A列列明', 'S列列明', 'H列列明']]
二、选取某列'STATUS'里面元素为"ACTIVE"的行,即删掉列STATUS元素不是ACTIVE的行
df = df[df['STATUS'] == "ACTIVE"]
(单项条件搜索,类似SELECT ALL WHERE df.STATUS = ACTIVE)
三、选取'BADTHING'列为元素空的行,既badthing这列有内容的行全部去掉,组成一个新的dataframe
df = df[df['BADTHING'].isnull()]
(空值搜索)
四、选取GOODREASON列元素为列表['quality', 'cheap']内元素的行
df = df[df['GOODREASON'].isin(['quality', 'cheap'])]
(多项条件搜索,类似SELECT ALL WHERE df.GOODREASON= quality AND cheap)
五、分组并进行遍历,运用groupby和for:
groupByNew = df.groupby('CITY', sort=False)
for name, groupData in groupByNew:
# TODO …… ……
如代码所示,我们可以对dataframe以某列'CITY'进行分组。我们如何取出某组的数据呢?当然是用
for循环。取出来的name即是组名,而groupData同样是一个dataframe,可以进行更进一步操作。
六、对Series数据进行排序:
series= series.sort_values(ascending=False) # 进行从大到小排序
进阶:关于groupby的一些信息:
在进行groupby运算后,直接打印会得一个object信息,添加groups参数后
print df.groupby(by=['CITY']).groups
打印出来会是带group标签和原数据行标签(也就是原来dataframe里面对应行的index)的组合信息:
{'BEIJING': [25998L, 26134L, 26135L, 26235L, 26340L], 'SHANGHAI': [33370L, 33426L, 33541L], 'CHENGDU': [26153L]
我们可以看到,按照groups来print,得出city为北京的情况下,对应原来的行标签第25998行、26134行等
即使指定了某列:
print df.groupby(by=['CITY'])['QUANTITY'].groups
依然会得出相同的结果:
{'BEIJING': [25998L, 26134L, 26135L, 26235L, 26340L], 'SHANGHAI': [33370L, 33426L, 33541L], 'CHENGDU': [26153L]
除非我们把每个分组的所有行都整理成一行,如用sum来求和:
print df.groupby(by=['CITY'])['QUANTITY'].sum()
这样就可以成功转换成dataframe了:
CITY
BEIJING 5
SHANGHAI 207
CHENGDU 518
……
汇总说明如下:
print '----------NEW------------\n', type(df.groupby(by=['CITY']))
print '----------NEW------------\n', type(df.groupby(by=['CITY']).sum())
print '----------NEW------------\n', type(df.groupby(by=['CITY'])['QUANTITY'])
print '----------NEW------------\n', type(df.groupby(by=['CITY'])['QUANTITY'].sum())
所得结果为:
----------NEW------------
----------NEW------------
----------NEW------------
----------NEW------------
说明:
一个dataframe经过groupby以后得到的类型是pandas.core.groupby.DataFrameGroupBy。而用for in循环取出的每个项的类型是pandas.core.frame.DataFrame
一个dataframe经过groupby再进行sum以后仍然是dataframe(不过具体通过那一列来sum有待考证)
一个dataframe经过groupby以后再进行列选取,得到的是pandas.core.groupby.SeriesGroupBy类型。可知用for in循环取出的是pandas.core.series.Series
一个series经过groupby再进行sum以后仍然是series
阅读全文
0 0
- python pandas 数据框 条件选取行列数据
- pandas数据样本行列选取
- Python-Pandas(1)数据读取与显示,数据样本行列选取
- Python pandas库 数据切片 行列操作
- Pandas数据的选取
- python/pandas数据分析(十六)- 数据索引与选取
- pandas系列之 DataFrame 行列数据筛选
- python数据分析---Pandas
- Python 数据分析 pandas
- python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix
- python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix
- python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix
- python科学计算笔记(四)pandas 数据索引与选取
- python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix
- 【数据平台】pandas按条件去重
- Python 数据分析-pandas 基础
- Python Pandas、Spark数据清洗
- Python-Pandas(3)数据预处理
- [torch] some bugs
- (转)Python中的ConfigParser模块使用详解
- Mysql实现企业级数据库主从复制架构实战
- R语言生存分析数据分析可视化案例
- Android DiskLruCache缓存工具封装
- python pandas 数据框 条件选取行列数据
- 数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找
- centos6.8下mosquitto分布式集群
- Shell编程基础篇-下
- Pycharm激活码
- Jedis一致性hash与sharding
- 1026. 程序运行时间(15)
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(一)
- Mac下 AndroidStudio 配置javah 命令