Pandas的数据结构分析
Pandas中有两个主要的数据结构:Series
和 DataFrame
,其中 Series
是一维的数据结构,DataFrame
是二维的、表格性的数据结构
Series
Series是一个类似于一维数组的对象,它能够保存任何数据类型,主要有一组数据和与之相关的索引两部分组成,如图:
创建Series对象
Pandas 的 Series 对象可以使用以下构造方法创建
class pandas.series(data=None, index=None, dtype=None,name=None,copy=False,fastpath=False)
# data : 传入的数据,可以是 ndarray, list(必须)
# index: 索引(非必须)
# dtype: 指定数据的数据类型(非必须)
# copy:是否复制数据,默认是 False(非必须)
- 传入列表构造 Series 对象,不传入
index
参数,此时默认会创建一个 0~N 的整数索引
import pandas as pd
ser_obj = pd.Series([1,2,3,4])
ser_obj
- 指定索引创建 Series 对象,索引必须是唯一的,且与数据的长度相同
ser_obj = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
ser_obj
- 使用 dict 进行构建
student_data = {1:"小明", 2:"小张", 3:"小李", 4:"小乐"}
ser_obj = pd.Series(student_data)
ser_obj
- 指定数据类型
ser_obj = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'],dtype='float64')
ser_obj
获取Series对象的索引和数据
获取 Series 对象的索引和数据,可以分别使用 Series 对象的 index
属性和value
属性获取,索引和数据都是以对象的形式存在
ser_obj = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
ser_obj.index # 获取索引对象
ser_obj.values #获取数据
获取单个值可以直接索引默认的索引
arr_obj[2]
DataFrame
DataFrame是一个类似于二维数组或表格的对象,它的每列数据可以是不同的数据类型。与Series对象相似,DataFrame 的结构也是由索引和数据组成的,不同的是,DataFrame 不仅有行索引,还有列索引
创建DataFrame
Pandas 的 DataFrame 类对象可以使用以下的构造方法创建:
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
# columns :列标签,如果没有传入索引参数,则默认会自动创建一个从0 ~ N的整数索引
其余参数的含义和 Series构造方法中的参数的含义一样
- 不指定索引创建,行索引列索引都是默认的
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']])
df_obj
- 指定索引创建
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']],index=['x','y'],columns=[1,2,3,4])
df_obj
获取DataFrame 对象的索引和数据
获取行索引和列索引
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']],index=['x','y'],columns=[1,2,3,4])
df_obj.index # 行索引
df_obj.columns # 列索引
获取数据
获取列的两种方法
- 通过列索引获取列数据
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']],index=['x','y'],columns=[1,2,3,4])
df_obj
df_obj[1]
- 通过属性获取列数据
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']],index=['x','y'],columns=['c1','c2','c3','c4'])
df_obj
df_obj.c1
获取行的两种方法
loc[行标签名]
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']],index=['x','y'],columns=['c1','c2','c3','c4'])
df_obj
df_obj.loc['x']
iloc[默认整数索引]
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']],index=['x','y'],columns=['c1','c2','c3','c4'])
df_obj
df.iloc[1]
添加和删除数据
添加数据
要想为DataFrame添加一列数据,可以通过给列索引或者列名赋值的方式实现。新增列的长度必须和其他列的长度保持一致
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']],index=['x','y'],columns=['c1','c2','c3','c4'])
df_obj
df_obj['c5'] = ['s','b']
df_obj
删除数据
要想删除一列数据,则可以使用del
语句实现
df_obj = pd.DataFrame([['a','b','c','d'],['e','f','g','h']],index=['x','y'],columns=['c1','c2','c3','c4'])
df_obj
del df_obj[c1]
df_obj