zoukankan      html  css  js  c++  java
  • pandas模块

    pandas模块

    pandas基于Numpy,可以看成是处理文本或者表格数据。pandas中有两个主要的数据结构,其中Series数据结构类似于Numpy中的一维数组,DataFrame类似于多维表格数据结构。

    pandas是python数据分析的核心模块。它主要提供了五大功能:

    1. 支持文件存取操作,支持数据库(sql)、html、json、pickle、csv(txt、excel)、sas、stata、hdf等。
    2. 支持增删改查、切片、高阶函数、分组聚合等单表操作,以及和dict、list的互相转换。
    3. 支持多表拼接合并操作。
    4. 支持简单的绘图操作。
    5. 支持简单的统计分析操作。

    import pandas as pd

    1.Series 一维数组

    import numpy as np
    import pandas as pd
    
    arr = np.array([1, 2, 3, 4, np.nan, ])
    s = pd.Series(arr)
    print(s)
    
    0    1.0
    1    2.0
    2    3.0
    3    4.0
    4    NaN
    dtype: float64
    

    2.DataFrame 多维数组

    1. 生成表格

    dates = pd.date_range('20190101', periods=6)
    print(dates)
    np.random.seed(1)
    arr = 10*np.random.randn(6, 4)
    print(arr)
    df = pd.DataFrame(arr, index=dates, columns=['c1', 'c2', 'c3', 'c4'])
    df
    
    c1 c2 c3 c4
    2019-01-01 16.243454 -6.117564 -5.281718 -10.729686
    2019-01-02 8.654076 -23.015387 17.448118 -7.612069
    2019-01-03 3.190391 -2.493704 14.621079 -20.601407
    2019-01-04 -3.224172 -3.840544 11.337694 -10.998913
    2019-01-05 -1.724282 -8.778584 0.422137 5.828152
    2019-01-06 -11.006192 11.447237 9.015907 5.024943

    2. 使用pandas读取字典形式的数据

    df2 = pd.DataFrame({'a': 1, 'b': [2, 3], 'c': np.arange(2), 'd': 'hello'})
    df2  # 字典的key就变成了cloumns
    
    a b c d
    0 1 2 0 hello
    1 1 3 1 hello

    3. DataFrame属性

    属性 详解
    dtype 查看数据类型
    index 查看行序列或者索引
    columns 查看各列的标签
    values 查看数据框内的数据,也即不含表头索引的数据
    describe 查看数据每一列的极值,均值,中位数,只可用于数值型数据
    transpose 转置,也可用T来操作
    sort_index 排序,可按行或列index排序输出
    sort_values 按数据值来排序

    4. DataFrame取值

    1. df['c2']:取c2一列
    2. df[0:3]:取前三行
    3. loc/iloc
      1. 通过自定义的行标签选择数据df.loc['2019-01-01':'2019-01-05']
      2. print(df.iloc[2, 1])通过索引取值
      3. df.iloc[1:4, 1:4]
    4. df.values取所有的值
    5. df[df['c1'] > 0]使用逻辑判断取值

    5. DataFrame值替换

    1. df.iloc[0:3, 0:2] = 0
    2. df[df['c1'] > 0]=100使用逻辑判断替换

    6. 读取CSV文件/逗号分隔值

    CSV(Comma-Separated Values),有时也称为字符分隔值,因为分隔字符也可以不是逗号

    from io import StringIO
    
    test_data = '''
    5.1,,1.4,0.2
    4.9,3.0,1.4,0.2
    4.7,3.2,,0.2
    7.0,3.2,4.7,1.4
    6.4,3.2,4.5,1.5
    6.9,3.1,4.9,
    ,,,
    '''
    
    test_data = StringIO(test_data)
    df = pd.read_csv(test_data, header=None)
    df.columns = ['c1', 'c2', 'c3', 'c4']
    print(df)
    

    7. 导入导出excel表格

    import pandas as pd
    
    df = pd.read_excel(filename)  #读取文件
    df.to_excel(filename)  #保存文件
    
    import pandas as pd
    from io import StringIO
    
    dic={f'group{k}':[v,v+1,v**2] for k,v in enumerate(range(6))}
    
    df=pd.DataFrame(dic,index=['a','b','c'])
    
    df.to_excel('test.xlsx') #保存文件
    df1=pd.read_excel('test.xlsx')  #读取文件
    
    print(df1)
    

    8. pandas读取json文件

    strtext = '[{"ttery":"min","issue":"20130801-3391","code":"8,4,5,2,9","code1":"297734529","code2":null,"time":1013395466000},
    {"ttery":"min","issue":"20130801-3390","code":"7,8,2,1,2","code1":"298058212","code2":null,"time":1013395406000},
    {"ttery":"min","issue":"20130801-3389","code":"5,9,1,2,9","code1":"298329129","code2":null,"time":1013395346000},
    {"ttery":"min","issue":"20130801-3388","code":"3,8,7,3,3","code1":"298588733","code2":null,"time":1013395286000},
    {"ttery":"min","issue":"20130801-3387","code":"0,8,5,2,7","code1":"298818527","code2":null,"time":1013395226000}]'
    
    df = pd.read_json(strtext, orient='records')
    print(df)
    
    df.to_excel('pandas处理json.xlsx',
                index=False,
                columns=["ttery", "issue", "code", "code1", "code2", "time"])
                
    
    
    code code1 code2 issue time ttery
    0 8,4,5,2,9 297734529 NaN 20130801-3391 1013395466000 min
    1 7,8,2,1,2 298058212 NaN 20130801-3390 1013395406000 min
    2 5,9,1,2,9 298329129 NaN 20130801-3389 1013395346000 min
    3 3,8,7,3,3 298588733 NaN 20130801-3388 1013395286000 min
    4 0,8,5,2,7 298818527 NaN 20130801-3387 1013395226000 min
  • 相关阅读:
    P6057 [加油武汉]七步洗手法
    LC 1349. Maximum Students Taking Exam (Hungarian / Max Flow)
    P1879 [USACO06NOV]玉米田Corn Fields
    P1433 吃奶酪 (TSP)
    LC 1349. Maximum Students Taking Exam
    获取XML中的值
    TimeZoneInfo类的使用
    XML 克隆节点
    网络协议概述:物理层、连接层、网络层、传输层、应用层详解
    Vuex
  • 原文地址:https://www.cnblogs.com/yellowcloud/p/11178127.html
Copyright © 2011-2022 走看看