Pandas的基础看这一篇足以(有后续)

Pandas概述:

Pandas是一个基于Numpy的数据分析包,它是为了解决数据分析任务而创建的。Pandas中纳入了大量库和标准的数据模型,提供了高效地操作大型数据集所需的函数和方法,使用户能够快速便捷地处理数据。

Pandas特点:

  • 一个快速高效的DataFrame对象,具有默认和自定义的索引
    *用于在数据结构和不同文件格式中读取和写入数据,比如文本文件
    *智能数据对齐和缺失数据的集成处理
    *基于标签切片和花式索引获取数据集的子集
    *可以删除或插入来自数据结构的列
    *按数据分组进行聚合和转换
    *高性能的数据合并和连接
    *时间序列功能

Pandas的数据结构分析

Pandas中有两个主要的数据结构:SeriesDataFrame。其中Series是一维的、DataFrame是二维的。

Series

Series的介绍

Series是一个类似于一维数组的对象,它能够保存任何类型的数据,主要由一组数据和与之相关的索引两部分构成。
Series

index element
0 1
1 2
2 3
3 4
4 5

索引在左,数据在右

Series对象的创建

Pandas的Series类对象可以使用以下构造方法创建:
class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)

构造方法中常用参数含义如下:

1.data:传入的数据,可以是ndarray、list等。
2.index:索引,必须是唯一的,且与数据的长度相同。如果没有传入索引参数,默认会自动创建一个从0~N的整数索引。
3.dtype:数据的类型
4.copy:是否复制数据,默认为False

import pandas as pd
ser_obj = pd.Series([1,2,3,4,5])
ser_obj

可以在创建的时候,为数据指定索引:

扫描二维码关注公众号,回复: 11035090 查看本文章
import pandas as pd
ser_obj = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
ser_obj

使用列表构建Series外,可以使用dict进行构建,具体如下:

year_data = {2001:17.8, 2002:20.1, 2003:16.5}
ser_obj2 = pd.Series(year_data)
ser_obj2

为了方便的操作Series对象中的索引和数据,所以该对象提供两个属性index和values分别进行获取。

DataFrame

DataFrame的介绍:

DataFrame是一个类似于二维数组或表格的对象,它每列数据可以是不同的数据类型。由索引和数据组成,有行索引、还有列索引。
默认索引也是自动创建,默认是从0-N的整数类型索引。

DataFrame对象的创建:

Pandas的DataFrame类对象可以使用以下构造方法创建:
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)
常用参数如下:

  • index:行标签。如果没有传入索引参数,默认会自动创建一个从0-N的整数类型索引
    *columns:列标签,如果没有传入索引参数,默认会自动创建一个从0-N的整数类型索引
import numpy as np
import pandas as pd
demo_arr = np.array([['a','b','c'], ['d','e','f']])
df_obj = pd.DataFrame(demo_arr)

如果在创建DataFrame类对象时,指定了索引,则DataFrame的列会按照指定的索引顺序进行排列:

df_obj =pandas.DataFrame(demo_arr,)columns=['No1','No2','No3']
df_obj

为了便于获取每列数据,可以使用列索引方式,也可以通过访问属性方式来获取,返回一个结果是Series对象,该对象拥有与原DataFrame对象相同的行索引。

element = df_obj['No2']
element

注意:在获取DataFrame的一列数据时,推荐使用列索引方式

要想为DataFrame增加一列数据,则可以通过给列索引或者列名称赋值的方式实现,类似于给字典增加键值对的操作。

df_obj['No4'] = ['g','h']
df_obj

删除一列数据:

del df_obj['No3']

print(df_obj)

Pandas的索引对象:

索引对象的创建

  • pd.X(array-like)

    index = pd.Index(np.arange(3))
    

索引对象的分类

分类 介绍 描述
Index 最泛化的对象 轴标签—>数组
Int64Index 用于整数的特殊对象
MultiIndex 层次化索引对象(单个轴上的多层索引) 可看作是元组的数组
DatetimeIndex 用于纳米级索引对象

索引对象的获取:

分类 获取方法
Series .index
DataFrame ① .index ② .columns

索引对象的特点:

索引对象是不可修改的,这样能够保证Index对象在不同的数据结构之间安全的共享

obj = Series(data,index=index)
print(obj.index is index)

结果为True

索引对象的方法和属性

方法:

方法表达式 描述 特征
append() 连接另一个索引对象 数组
diff/intersection/union() Index–>差集/交集/并集
isin() 各值是否在参数集合中 布尔数组
delete/insert() 删除/插入索引出的元素
drop() 删除传入的值 会生成新的Index
unique() 计算唯一值数组

属性:

属性 返回值 描述
is_monotonic True 各元素均大于前一个元素
is_unique True 当前Index无重复值

索引对象的重命名(轴索引)

有两种方式:

  • 直接赋值

  • obj.rename()

    方法 操作 特征
    直接赋值 obj.index/columbs = … 就地修改
    obj.rename() index/columns = 函数/字典(传入部分轴)
    obj.rename() inplace=默认(保留原始数据)/True(就地修改)
    data.index = data.index.map(str.upper)
    data.rename(index={old:new},columns = {old;new})
    data.rename(index=str.title,columns = str.upper)
    

索引的整数索引:

程序:

客官们,先来看一个整数索引的示例:

import numpy as np
import pandas as pd
from pandas import Series
ser = Series(np.arange(3))
print(ser.index)

这个程序的输出结果是:

(start = 0,stop = 3,step = 1)

import numpy as np
import pandas as pd
from pandas import Series
ser = Series(np.arange(3))
print(ser[-1])

这个程序会发生错误.

解析:

第一个程序能够正确的运行,并返回.

索引器:自动递增的数字索引(RangeIndex)

而第二个程序无法正常运行时因为索引是基于标签或者位置

这样我们得出了整数索引的规则.

整数索引的规则:

当含有索引器时:

  • 根据整数进行数据选取

  • 总是面向标签的--------整数->标签名 包括ix切片

    非整数索引:

    示例:

    import numpy as np
    import pandas as pd
    from pandas import Series
    ser2 = Series(np.arange(3),index = ['a','b','c'])
    
    

    使用任意类型的索引

    还是基于标签或者位置的.

整数标签基于位置的使用方法:

数据结构 方法 描述
Series series.iloc[i]/.iat[i] i为整数
DataFrame DF.iloc[*] 1️⃣ [ i ]第 i +1行 2️⃣ [ : j] 第 j + 1列
发布了82 篇原创文章 · 获赞 26 · 访问量 3962

猜你喜欢

转载自blog.csdn.net/qq_40742223/article/details/105645381