Pandas系列之入门篇
Pandas系列之入门篇
简介
- pandas 是 python用来数据清洗、分析的包,可以使用类sql的语法方便的进行数据关联、查询,属于内存计算范畴,
效率远远高于硬盘计算的数据库存储。另外pandas还提供了大数据存储的API——HDFStore,来对接HDF5。
安装
1.pandas 利用豆瓣源,速度快
pip install pandas numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
2.pytables
pip install tables
3.hdf5
Download: https://www.hdfgroup.org/downloads/hdf5/source-code/
./configure
make
make check
make install
使用案例
上网流量数据:源数据以CSV文件实时生成,通过监听文件的方式做到一旦有新的CSV生成就进入数据处理流程。
总的流程大致分5部,分别是:读取CSV、数据清洗、数据分析、数据统计、存储HDF5。
关于下面用到的一些字段的解释说明:
- user: 用户
- tm_type: 终端类型
- serv: 一级app分类
- app: 二级app分类
- record_time: 记录产生的时间
- up_flux: 上行流量
- down_flux: 下行流量
pandas api document: https://pandas.pydata.org/pandas-docs/stable/api.html?highlight=hdfstore
1.读取CSV
filename_src = 'xxx.csv'
col_list = ['user', 'tm_type', 'serv', 'app', 'record_time', 'up_flux', 'down_flux']
# \x01表示空格 16进制
df_flux = pd.read_csv(filename_src, sep='\x01', error_bad_lines=False, index_col=False, usecols=[3, 10, 11, 12, 15, 16, 17], names=col_list)
2.数据清洗
"""
data clean
"""
# remove null data
df_flux.dropna(inplace=True)
# remove duplicates
df_flux.drop_duplicates(inplace=True)
- 数据分析
"""
data analysis
inner join v_student_net(inner join)
refer column: user
"""
conn = MySQLdb.connect(host, user, passwd, database, charset='utf8')
cur = conn.cursor()
sql = 'select outid, username from v_student_net'
cur.execute(sql)
results = cur.fetchall()
df_student_net = pd.DataFrame(list(results), columns=['outid', 'user'])
# inner join df_flux, v_student_net
df_flux = pd.merge(df_flux, df_student_net, on='user')
- 数据统计
"""
data statistics
group by: record_date, outid, serv, app
aggregate by: up_flux, down_flux
sort by: down_flux with desc
"""
# as_index=False,default True
grouped = df_flux.groupby(['record_date', 'outid', 'serv', 'app'], as_index=False)
df_flux = grouped.agg({'up_flux': 'sum', 'down_flux': 'sum'}).sort_values('down_flux', ascending=False)
- 存储HDF5
"""
store in hdf5
"""
hdf5_filepath = 'xxx.h5'
store = pd.HDFStore(hdf5_filepath, complevel=1, complib='bzip2')
store.put('flux', df_flux, format='table', append=True, data_columns=True)
总结
从上面的例子可以看到,pandas处理数据是相当的简洁明了,存储hdf5更是两句话就搞定。当然这里面会有相当多注意的细节,稍有不慎就会导致意想不到的结果,我将会在下一篇介绍。
要学好pandas,api文档必须要精通!
Pandas系列之入门篇的更多相关文章
- Pandas系列之入门篇——HDF5
Pandas系列之入门篇--HDF5 简介 HDF5(层次性数据格式)作用于大数据存储,其高效的压缩方式节约了不少硬盘空间,同时也给查询效率带来了一定的影响, 压缩效率越高,查询效率越低.pandas ...
- Python系列之入门篇——HDFS
Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...
- Python系列之入门篇——MYSQL
Python系列之入门篇--MYSQL 简介 python提供了两种mysql api, 一是MySQL-python(不支持python3),二是PyMYSQL(支持python2和python3) ...
- 【转】C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。
C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 标签: c#objectnewlineexceptionbytestring 2010-05-17 01:10 117109人阅读 ...
- C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ?
第一篇文章我相信很多人不看都能做的出来,但是,用过微软SerialPort类的人,都遇到过这个尴尬,关闭串口的时候会让软件死锁.天哪,我可不是武断,算了.不要太绝对了.99.9%的人吧,都遇到过这个问 ...
- Python系列之入门篇——python2.7.13安装
Python2.7.13 安装 说明 以下所有操作都基于centos6.9 1. Issue zlib zlib-devel是安装setuptools依赖的模块,需要在安装python之前先安装这两个 ...
- Docker系列之入门篇
Dcoker是什么? 概述 Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行 ...
- Python系列之入门篇——pytables及其客户端
pytables及其客户端查看 pytables # ubuntu sudo apt-get install python-tables pip install flask flask-httpaut ...
- Redis系列一 - 入门篇
问:项目中为何要选用Redis? 答:传统的关系型数据库(如MySQL)已经不适用所有的场景了,比如美云销抢单活动的库存扣减,APP首页的访问流量高峰等等,都容易把数据库打崩,所以引入了缓存中间件,目 ...
随机推荐
- 【quickhybrid】API多平台支撑的实现
前言 在框架规划时,就有提到过这个框架的一些常用功能需要支持H5环境下的调用,也就是需要实现API的多平台支撑 为什么要多平台支撑?核心仍然是复用代码,比如在微信下,在钉钉下,在quick容器下, 如 ...
- 「mysql优化专题」详解引擎(InnoDB,MyISAM)的内存优化攻略?(9)
注意:以下都是在MySQL目录下的my.ini文件中改写(技术文). 一.InnoDB内存优化 InnoDB用一块内存区域做I/O缓存池,该缓存池不仅用来缓存InnoDB的索引块,而且也用来缓存Inn ...
- Intellij IDEA编译代码出现红色标志
如图 原因:项目没有模块化加载 解决方法: 快捷键 Ctrl+Alt+Shift+S 进入 Project Structure 界面,选择 Modules --> Sources -->选 ...
- 【功能代码】---3 JS判断字符串是否包含某个字符串
JS判断字符串是否包含某个字符串 var str ="abc"; if(str.indexOf("bc")>-1){ alert('str中包含bc字符串 ...
- Scrapy爬虫实例——校花网
学习爬虫有一段时间了,今天使用Scrapy框架将校花网的图片爬取到本地.Scrapy爬虫框架相对于使用requests库进行网页的爬取,拥有更高的性能. Scrapy官方定义:Scrapy是用于抓取网 ...
- ES6对象及ES6对象简单拓展
ES6对象和传统的JS比较起来支持简写,比如说属性简写方法简写,还支持name属性,可以通过他迅速得到函数属性名表达式(如果是用bind方法创造的函数name属性会返回bound加上原函数的名字,Fu ...
- async和enterproxy控制并发数量
聊聊并发与并行 并发我们经常提及之,不管是web server,app并发无处不在,操作系统中,指一个时间段中几个程序处于已经启动运行到完毕之间,且这几个程序都是在同一处理机上运行,并且任一个时间点只 ...
- 小白的Python之路 day4 迭代器
迭代器 学习前,我们回想一下可以直接作用于for循环的数据类型有以下几种: 1.集合数据类型,如list.tuple.dict.set.str等: 2.是generator,包括生成器和带yield的 ...
- [置顶]
xamarin android使用gps定位获取经纬度
看了文章你会得出以下几个结论 1.android定位主要有四种方式GPS,Network(wifi定位.基站定位),AGPS定位 2.绝大部分android国产手机使用network进行定位是没有作用 ...
- openstack操作之一 命令行
在openstack环境中提供了多种操作虚拟机的方法,有最简单直接的dashborad界面,有不直观但高效的命令行,还有进阶版的postman调用openstack restfulapi和命令行中使用 ...