pandas入门

Posted 派大星先生c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas入门相关的知识,希望对你有一定的参考价值。

目录

pandas两个常用的工具数据结构:Series和DataFrame

一、Series

Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及 一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的

Series:

obj = pd.Series([4, 7, -5, 3])
obj


在索引过程中 可以有很多种形式

obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])
obj2
obj2.index

sdata = 'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000
obj3 = pd.Series(sdata)
obj3

states = ['California', 'Ohio', 'Oregon', 'Texas']
obj4 = pd.Series(sdata, index=states)
obj4

二、DataFrame

建DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典:

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

如果你使用的是Jupyter notebook,pandas DataFrame对象会以对浏览器友好的html表格的方式呈现。

如果指定了列序列,则DataFrame的列就会按照指定顺序进行排列:

pd.DataFrame(data, columns=['year', 'state', 'pop'])

索引、添加值和删除值

#索引   也可以用series中的索引方法
frame2.loc['three']
#添加值
frame2['debt'] = np.arange(6.)

val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
frame2['debt'] = val

#添加bool值
frame2['eastern'] = frame2.state == 'Ohio'
frame2
#删除
del frame2['eastern']
frame2.columns

下表给出了DataFrame构造函数所能接受的各种数据

索引对象

用到index这个函数

obj = pd.Series(range(3), index=['a', 'b', 'c'])
index = obj.index
index
index[1:]

# 字典的形式
dup_labels = pd.Index(['foo', 'foo', 'bar', 'bar'])
dup_labels

三、基本功能

1、重新索引

pandas对象的一个重要方法是reindex,其作用是创建一个新对象,它的数据符合新的索引。

obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])


对于时间序列这样的有序数据,重新索引时可能需要做一些插值处理。method选项即可达到此目的,例如,使用ffill可以实现前向值填充:

借助DataFrame,reindex可以修改(行)索引和列。只传递一个序列时,会重新索引结果的行:

列可以用columns关键字重新索引:

2、丢弃指定轴上的项

丢弃某条轴上的一个或多个项很简单,只要有一个索引数组或列表即可。由于需要执行一些数据整理和集合逻辑,所以drop方法返回的是一个在指定轴上删除了指定值的新对象:

obj = pd.Series(np.arange(5.), index=['a', 'b', 'c', 'd', 'e'])
new_obj = obj.drop('c')
obj.drop(['d', 'c'])

a    0.0
b    1.0
e    4.0
dtype: float64
data = pd.DataFrame(np.arange(16).reshape((4, 4)),
                    index=['Ohio', 'Colorado', 'Utah', 'New York'],
                    columns=['one', 'two', 'three', 'four'])
data.drop(['Colorado', 'Ohio'])


通过传递axis=1或axis='columns’可以删除列的值:

data.drop('two', axis=1)
data.drop(['two', 'four'], axis='columns')

3、索引、选取和过滤

索引

切片

过滤

4、用loc和iloc进行选取

对于DataFrame的行的标签索引,我引入了特殊的标签运算符loc和iloc。它们可以让你用类似NumPy的标记,使用轴标签(loc)或整数索引(iloc),从DataFrame选择行和列的子集。

这两个索引函数也适用于一个标签或多个标签的切片:

5、在算术方法中填充值

df1 = pd.DataFrame(np.arange(12.).reshape((3, 4)),
                   columns=list('abcd'))
df2 = pd.DataFrame(np.arange(20.).reshape((4, 5)),
                   columns=list('abcde'))
df2.loc[1, 'b'] = np.nan
df1
df2


df1 + df2

使用df1的add方法,传入df2以及一个fill_value参数:
指定一个填充值

6、排序和排名

根据条件对数据集排序(sorting)也是一种重要的内置运算。要对行或列索引进行排序(按字典顺序),可使用sort_index方法,它将返回一个已排序的新对象:

obj = pd.Series(range(4), index=['d', 'a', 'b', 'c'])
obj.sort_index()

对于DataFrame,则可以根据任意一个轴上的索引进行排序:

数据默认是按升序排序的,但也可以降序排序:

当排序一个DataFrame时,你可能希望根据一个或多个列中的值进行排序。将一个或多个列的名字传递给sort_values的by选项即可达到该目的:

四、汇总和计算描述统计


Pandas之入门

pandas入门

由于最近公司要求做数据分析,pandas每天必用,只能先跳过numpy的学习,先学习大Pandas库
Pandas是基于Numpy构建的,让以Numpy为中心的应用变得更加简单

pandas的数据结构介绍

  • Series

    • 由一组数据以及一组数据标签即索引组成
    import pandas as pd
    from pandas import Series,DataFrame
    
    obj = Series([4,7,-5,3])
    # 索引在左边,值在右边,默认从0开始
    obj
    0    4
    1    7
    2   -5
    3    3
    dtype: int64
    
    
    # 制定索引
    obj2 = Series([4,7,-5,3],index = [‘a‘,‘b‘,‘c‘,‘d‘])
    obj2
    a    4
    b    7
    c   -5
    d    3
    dtype: int64
    # 查看索引
    obj2.index
    Index([‘a‘, ‘b‘, ‘c‘, ‘d‘], dtype=‘object‘)
    
    # 查询
    obj2[[‘a‘,‘b‘,‘c‘]]
    a    4
    b    7
    c   -5
    dtype: int64
    
    obj2[obj2>0]
    a    4
    b    7
    d    3
    dtype: int64
    • 还可以直接看成一个关系型字典
    sdata = {‘ke‘:35000,‘text‘:70000,‘orgen‘:16000}
    obj3 = Series(sdata)
    obj3
    
    ke       35000
    text     70000
    orgen    16000
    dtype: int64
    
    keys = [‘ke‘,‘text‘,‘orgen‘,‘xu‘]
    obj4 = Series(sdata, index=keys)
    obj4
    ke       35000.0
    text     70000.0
    orgen    16000.0
    xu           NaN
    dtype: float64
    • 检测缺失值的重要两个函数 isnull和notnull
    obj4[obj4.isnull()]
    xu   NaN
    dtype: float64
    
    obj4[obj4.notnull()]
    ke       35000.0
    text     70000.0
    orgen    16000.0
    dtype: float64
    • Series本身和索引都有一个name属性
    # 可以理解成对象名称
    obj4.name = ‘pop‘
    # 对象的索引的名称
    obj4.index.name = ‘state‘
    obj4
    
    state
    ke       35000.0
    text     70000.0
    orgen    16000.0
    xu           NaN
    Name: pop, dtype: float64
    
    # Series的索引可以就地修改
    obj4.index = [‘new_ke‘,‘new_text‘,‘new_orgen‘,‘new_xu‘]
    new_ke       35000.0
    new_text     70000.0
    new_orgen    16000.0
    new_xu           NaN
    Name: pop, dtype: float64
  • DataFrame
    • DataFrame是一个表格型数据结构,最常用的是直接传入一个由等长列表或者是Numpy数组组成的字典
    data = {‘state‘:[‘oh‘,‘oh‘,‘vad‘,‘vad‘],
            ‘yead‘:[2000,2001,2002,2003],
            ‘pop‘:[1.5,1.7,3.6,2.4]
        }
    
    frame = DataFrame(data)
    # 自动有序排列
        yead    state   pop
    0   2000    oh  1.5
    1   2001    oh  1.7
    2   2002    vad 3.6
    3   2003    vad 2.4
    
    # 如果传入的列在数据中找不到,就产生NaN
    DataFrame(data,columns=[‘yar‘,‘yead‘])
        yar yead
    0   NaN 2000
    1   NaN 2001
    2   NaN 2002
    3   NaN 2003

以上是关于pandas入门的主要内容,如果未能解决你的问题,请参考以下文章

Python数据分析pandas入门------十分钟入门pandas

Python中pandas模块快速入门

利用Python进行数据分析——pandas入门

教程 | 一文入门Python数据分析库Pandas

[读书笔记] Python数据分析 pandas入门

pandas-python入门基操