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)
  1. 数据分析
"""
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')
  1. 数据统计
"""
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)
  1. 存储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系列之入门篇的更多相关文章

  1. Pandas系列之入门篇——HDF5

    Pandas系列之入门篇--HDF5 简介 HDF5(层次性数据格式)作用于大数据存储,其高效的压缩方式节约了不少硬盘空间,同时也给查询效率带来了一定的影响, 压缩效率越高,查询效率越低.pandas ...

  2. Python系列之入门篇——HDFS

    Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...

  3. Python系列之入门篇——MYSQL

    Python系列之入门篇--MYSQL 简介 python提供了两种mysql api, 一是MySQL-python(不支持python3),二是PyMYSQL(支持python2和python3) ...

  4. 【转】C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

    C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 标签: c#objectnewlineexceptionbytestring 2010-05-17 01:10 117109人阅读 ...

  5. C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ?

    第一篇文章我相信很多人不看都能做的出来,但是,用过微软SerialPort类的人,都遇到过这个尴尬,关闭串口的时候会让软件死锁.天哪,我可不是武断,算了.不要太绝对了.99.9%的人吧,都遇到过这个问 ...

  6. Python系列之入门篇——python2.7.13安装

    Python2.7.13 安装 说明 以下所有操作都基于centos6.9 1. Issue zlib zlib-devel是安装setuptools依赖的模块,需要在安装python之前先安装这两个 ...

  7. Docker系列之入门篇

    Dcoker是什么? 概述 Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行 ...

  8. Python系列之入门篇——pytables及其客户端

    pytables及其客户端查看 pytables # ubuntu sudo apt-get install python-tables pip install flask flask-httpaut ...

  9. Redis系列一 - 入门篇

    问:项目中为何要选用Redis? 答:传统的关系型数据库(如MySQL)已经不适用所有的场景了,比如美云销抢单活动的库存扣减,APP首页的访问流量高峰等等,都容易把数据库打崩,所以引入了缓存中间件,目 ...

随机推荐

  1. 基于MATLAB边缘检测算子的实现

    基于MATLAB边缘检测算子的实现 作者:lee神 1.   概述 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点.图像属性中的显著变化通常反映了属性的重要 ...

  2. 使用javascript正则表达式实现遍历html字符串

    最近在尝试实现一个js模板引擎,其中涉及到使用js解析html字符串的功能.由于我实现的这个模板不止是要能替换参数输出html字符串,还要可以解析出每个dom元素的名称及参数啥的. 网上找到了一个叫做 ...

  3. IdentityServer(12)- 使用 ASP.NET Core Identity

    IdentityServer具有非常好的扩展性,其中用户及其数据(包括密码)部分你可以使用任何想要的数据库进行持久化. 如果需要一个新的用户数据库,那么ASP.NET Core Identity是你的 ...

  4. cookies和re

    参考:http://cuiqingcai.com/968.html   http://cuiqingcai.com/977.html

  5. html5中将图片的绝对路径转换成文件对象

    html5中将图片的绝对路径转换成文件对象 将图片的绝对路径转换成base64编码,请看这篇文章 我们先来理解基本知识点: 1. 理解HTML5中的FileList对象与file对象. 在HTML5中 ...

  6. 《深入浅出Netty》【PDF】下载

    <深入浅出Netty>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062563 内容简介 本文档主要讲述的是深入浅出Netty: ...

  7. 利用GDAL进行工具开源化改造

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 为利于项目实施,团队用AE写过一个插件式的工具集,主要包括了数 ...

  8. NFV、DPDK以及部分用户态协议研究

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 对我而言,这是一个新的领域,很有意思. 一.解释名词: NFV(Network Functio ...

  9. Swift 开源项目练习应用

    小的View.动画实现练习 拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选,从工具.存储.网络.界 ...

  10. Java 哲学家进餐

    某次操作系统实验存档.V 这个哲学家除了吃就知道睡.( ╯□╰ ) 哲学家.java: package operating.entity.philosophyeating; import operat ...