• pandas入门


    记录一些常用的pandas基础的使用方法。

    1. 数据结构

    pandas有两种主要的数据结构:Series和DataFrame

    1.1 Series

    Series是一个一维的数组对象,它包含了一个数据标签(称为索引)和一个数组数据。事实上,可以将Series理解为一个以数据标签为key,以数值为value的键值对(字典)。

    A.创建一个最简单的Series(其标签默认生成):

    obj=Series([3,5,7,8])

    生成结果:

    B.获取其中的值(获取Series的数组表示):

    obj.values

    C.获取索引对象:

    obj.index

    注意默认的索引,obj.index返回的对象是一个Int64的list对象

    D.创建带有索引的Series:

    obj=Series([2,3,4,6],index=['d','f','e','y'])

    E.利用索引获取值

    obj['d']

    F.通过bool数组过滤,使用乘法

    obj[obj>3]

    G.Series中的空值使用NaN表示,可以通过

    pd.isnull(obj)
    
    pd.notnull(obj)

    检查数据是否为空值。

    1.2 DataFrame

    DataFrame类似于关系型数据库中的一张二维表。DataFrame在Series的基础上添加了列索引,因此可以看作是添加了列索引的Series数组。

    A.创建一个DataFrame

    data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
            'year': [2000, 2001, 2002, 2001, 2002],
            'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
    frame=DataFrame(data)

    B.如果传递了一个行,但不包括在data中,创建的DataFrame将表示为NaN。(在这个例子中,debt所在列所有的行都为空值NaN,且我们显式地指定了行索引)

     

    C.利用列索引,通过字典或者属性形式,获取DataFrame对象的一列

    frame['year']
    
    frame.year

    D.利用DataFrame.ix[]获取DataFrame对象的一行。注意向ix中传入的可以是行索引名字(如字符串形式),也可以是位置号

    frame.ix[1]
    
    frame.ix['two']

    利用ix索引行,利用字典或者属性形式索引列,则可以组合以索引到DataFrame中的任意一个值

    E.列可以通过赋值来修改,赋予的值可以是数字,数组或者Series对象

    F.对一个不存在的列赋值,将会创建一个新的列

    注意,利用字典形式对一个不存在的列赋值,才会新建一个列

    2. 一些功能

    2.1 重新索引

    reindex使数据符合一个新的行索引,以构造一个新的对象。如果重新索引时,部分行不存在值,将置为NaN。columns可以对列重新索引

    重新索引时,可以对丢失的值进行填充。可以传入method或者fill_value填充

    当method为ffill表示填充值为前一行的值(前向填充),bfill表示填充值为后一行的值(后向填充)

    2.2 从坐标轴删除条目

    可以使用drop方法删除Series中的一个或多个值,删除DataFrame中的一个或多个行

    2.3 切片

    可以使用标签切片,注意,这里切片和Python的切片并不一样,他会把结束点也包括在内

    2.4 大文件读写

    csv大文件读写一般向read_csv()函数中传入chunksize或者iterator参数完成

    reader=pd.read_csv('./data1.csv',chunksize=10000)
    
    for chunk in reader:#chunk为DataFrame类型(二维表)
        for i in chunk.index:#chunk.index为元素类型为Int64的list
            value1=chunk.ix[i]['column']#获取chunk表中的一个值,先取行,在得列
            value2=chunk['column'][i]#获取chunk中的一个值,先取列,再得行
  • 相关阅读:
    spring boot整合quartz存储到数据库
    java多线程定时器和java判断一个时间是否在时间区间内和用正则表达式获取String字符串之间的数据
    maven项目通过java加载mqtt存储到mysql数据库,实现发布和接收
    java往MongDB导入大量数据
    SSH面试题收藏
    Spring面试题
    Hibernate面试题收藏
    Spring MVC
    浅谈 Struts2 面试题收藏
    JSP 新闻发布会
  • 原文地址:https://www.cnblogs.com/mengnan/p/7609033.html
Copyright © 2020-2023  润新知