zoukankan      html  css  js  c++  java
  • Python系列之入门篇——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)
    
    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文档必须要精通!

  • 相关阅读:
    把A库aa表结构复制到B库中生成bb表
    C #登录代码
    C# 跟查询有关的代码
    C# 输出用“*”组成的菱形
    POJ 3696 The Luckiest number 数论,GCD
    用一句SQL取出第 m 条到第 n 条记录的方法
    Web Services的基本原理
    常用SQL语句
    什么应用适合Web Services
    应该了解的垃圾收集机制(一)
  • 原文地址:https://www.cnblogs.com/dzqk/p/8296047.html
Copyright © 2011-2022 走看看