Pandas两种基本数据结构:Series和DataFrame

一:Pandas常用类Series

Series可以存储带有标签的一维数据。
Series 由两个主要部分组成:索引和数据。索引是每个元素的唯一标识符,类似于数组的下标;数据是实际存储在 Series 中的值。索引可以是整数、字符串或其他数据类型。

1.1:Series的属性

values:返回 Series 中的值,类型为 ndarray。
index:返回 Series 中的索引,类型为 Index。
dtype:返回 Series 中元素的数据类型。
name:返回 Series 的名称。
ndim:返回 Series 的维度,固定为 1。
shape:返回 Series 中数据的形状,固定为 (n,),其中 n 表示 Series 的长度。
size:返回 Series 中元素的数量,等同于 len(series)。
empty:返回一个布尔值,表示 Series 是否为空。
axes:返回一个包含 Series 索引和数据轴标签的列表。
values_counts():返回一个包含 Series 中唯一值及其出现次数的 Series。
astype(dtype):将 Series 中的数据类型转换为指定的类型。
isnull():返回一个布尔型的 Series,表示 Series 中的缺失值。
notnull():返回一个布尔型的 Series,表示 Series 中的非缺失值。

1.2:创建Series的三种方法:数组、列表和字典创建Series数据

# 创建Series
print('通过ndarry创建的series:\n',pd.Series(np.arange(5),index=['a','b','c','d','e'],name='ndarry'))

list1 = [0,1,2,3,4]
print('通过list创建的series:\n',pd.Series(list1,index=['a','b','c','d','e']))

dit = {'a':0,'b':1,'c':2,'d':3,'e':4}
print('通过dict创建的series:\n',pd.Series(dit))

在这里插入图片描述

1.3:访问Series数据

# 访问Series数据
series = pd.Series(dit)

print('访问位于第一个位置的数据:',series[0])

print('访问index为a的数据',series['a'])

bool = (series < 4)
print('bool类型的series为:\n',bool)
print('通过bool数据访问series数据:\n',series[bool])

在这里插入图片描述
1.4:更新、插入和删除Series数据

# 更新、插入和删除
series['a'] = 3
print('赋值更新后的series数据:\n',series)

series1 = pd.Series([5,6],index=['f','g'])
#print('插入新series后的series数据:\n',series.append(series1))  # append方法在将来会被移除,使用concat代替
print('插入新series后的series数据:\n',pd.concat([series,series1]))

series1['h'] = 7
print('在series后插入单个数据:\n',series1)

series.drop('e',inplace=True)
print('删除索引e对应的数据后的series:\n',series)

在这里插入图片描述

二:Pandas常用类DataFrame

DataFrame 本质上可以被视为一个二维数组或表格数据结构。它和R语言的dataframe数据集十分相似。

2.1:DataFrame属性

values:返回 DataFrame 中的值,类型为 ndarray。
index:返回 DataFrame 中的索引,类型为 Index。
columns:返回 DataFrame 中的列名,类型为 Index。
dtypes:返回 DataFrame 中每一列的数据类型,类型为 Series。
shape:返回 DataFrame 中数据的形状,类型为 tuple。
size:返回 DataFrame 中元素的数量,等同于 shape[0] x shape[1]。
empty:返回一个布尔值,表示 DataFrame 是否为空。
axes:返回一个包含行和列轴标签的列表。
ndim:返回 DataFrame 的维度,固定为 2。
describe():返回 DataFrame 中数值型数据的统计信息。
info():返回 DataFrame 对象的简要摘要,包括行列数量、数据类型、缺失值情况等。
head(n):返回 DataFrame 的前 n 行。
tail(n):返回 DataFrame 的后 n 行。
T:返回 DataFrame 的转置矩阵,即行列互换。
sort_index(axis, ascending):按轴排序。
sort_values(by, axis, ascending):按值排序。
loc[]:通过标签选择行或列。
iloc[]:通过位置选择行或列。
dropna():删除缺失值。
fillna(value):填充缺失值。
astype(dtype):将 DataFrame 中的数据类型转换为指定的类型。
isnull():返回一个布尔型的 DataFrame,表示 DataFrame 中的缺失值。
notnull():返回一个布尔型的 DataFrame,表示 DataFrame 中的非缺失值。

2.2:创建DataFrame

# 创建DataFrame
data = np.arange(10).reshape(5, 2, order='F')  # 通过reshape将一维数组按列(默认按行)重塑成五行两列的二位数组
index = ['a', 'b', 'c', 'd', 'e']
columns = ['co1', 'co2']
df = pd.DataFrame(data, index=index, columns=columns)
print('通过ndarry创建的DataFrame:\n',df)

data = [[0, 5], [1, 6], [2, 7], [3, 8], [4, 9]]
df = pd.DataFrame(data, index=index, columns=columns)
print('通过list创建的DataFrame:\n',df)

data = {'col1': [0, 1, 2, 3, 4],
        'col2': [5, 6, 7, 8, 9]}
df = pd.DataFrame(data, index=index)
print('通过dict创建的Dataframe:\n',df)

在这里插入图片描述

2.3:访问数据(也可用于访问Series数据)

1:按首尾访问

# 访问DataFrame数据
print('默认返回前5行数据:\n',df.head())
print('返回后2行数据:\n',df.tail(2))

print('DataFrame的第一列为:\n',df['col1'])

在这里插入图片描述

2.按标签访问

# loc方法
print('DataFrame的第一列为:\n',df.loc[:,'col1'])  # loc方法中整行(列)用“:”代替,均为闭区间
print('访问多列数据:\n',df.loc[:,['col1','col2']])
print('访问单行数据:\n',df.loc['a',:])
print('访问多行数据:\n',df.loc[['a','b'],:])

print('访问多行多列:\n',df.loc[['a','b'],['col1','col2']])

print('DataFrame中col1大于1的数据为:\n',df.loc[df['col1'] > 1,'col1'])  # 注意最后的'col1'使结果只返回了一列

在这里插入图片描述

3.按位置访问

# iloc方法
print('DataFrame中col1大于1的数据为:\n',df.iloc[df['col1'].values > 1,:])  # iloc方法只接受索引位置,前闭后开

在这里插入图片描述

2.4:排序(也可用于Series数据)

# 排序
print(df.sort_index(axis=0, ascending=False))  # 按索引排序ascending默认是False,表示升序

print(df.sort_values(by='col2', axis=0, ascending=True))  # 按值排序

print('按col2列排序,返回前4个最小值:\n',df.nsmallest(4,'col2'))
print('按col2列排序,返回前2个最大值:\n',df.nlargest(2,'col2'))

在这里插入图片描述

2.5:更新、插入和删除DataFrame数据

# 更新、插入和删除
df['col1'] = [10, 11, 12, 13, 14]
print('更新到后的DataFrame:\n',df)

df['col3'] = [15, 16, 17, 18, 19]
print('插入列后的DataFrame:\n',df)

print(df.drop('col3', axis=1, inplace=False))  # inplace为True就是修改原数据 (默认是False),axis为0表示按行,1表示按列操作

df.drop(df.index, inplace=True)
df.drop(df.columns, axis=1, inplace=True)
print('清空DataFrame数据:\n',df)

在这里插入图片描述

2.6:合并(也可用于Series数据)

# 合并
df1 = pd.DataFrame(data=[['A1', 'B1'], ['A2', 'B2'], ['A3', 'B3']], index=[1, 2, 3], columns=['A', 'B'])
df2 = pd.DataFrame(data=[['C1', 'D1', 'E1'], ['C2', 'D2', 'E2'], ['C3', 'D3', 'E3'], ['C4', 'D4', 'E4']], index=[1, 2, 3, 4], columns=['C', 'D', 'E'])
print('横向堆叠df1和df2:\n', df1.join(df2))

print('纵向堆叠df1和df2:\n', pd.concat([df1,df2]))

df3 = pd.DataFrame(data=[['A1', 'B1', 'C1'], ['A2', 'B2', 'C2'], ['A3', 'B3', 'C3']], index=[1, 2, 3], columns=['A', 'B', 'C'])
print('以名称为C的列为主键外合并:\n',pd.merge(df2,df3,how='outer',on='C'))

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值