文章目录
- 1. DataFrame对象
- 1.1 创建DataFrame对象
- 1.2 DataFrame对象常用属性和方法
- 1.3 布尔值列表获取DataFrame对象中部分数据
- 1.4 DataFrame对象的运算
1. DataFrame对象
DataFrame是一个表格型的结构化
数据结构,它含有一组或多组有序的列(Series),每列可以是不同的值类型(数值、字符串、布尔值等)。
- DataFrame是Pandas中的最基本的数据结构对象,简称df;可以认为df就是一个二维数据表,这个表有行有列有索引。
- DataFrame是Pandas中最基本的数据结构,Series的许多属性和方法在DataFrame中也一样适用。
1.1 创建DataFrame对象
- 通过 pd.read_csv(‘xxx’) 返回 df
import pandas as pd
df = pd.read_csv(r"E:\数据分析\00_资料\02_数据_数分\data_v2\a_scientists.csv")
df
运行结果:
- 将 Series对象 通过 to_frame() 转成 df
ages = df['Age']
type(ages)
# 将Series对象通过to_frame()转成df
df2 = ages.to_frame()
print(df2)
print(type(df2))
运行结果:
- 使用 列表 加 元组 返回 df
# 使用列表 加 元组 返回 df
student_list = [(1,"张三",18),(2,"李四",19),(3,"王五",23)]
df3 = pd.DataFrame(student_list)
print(df3)
print(type(df3))
运行结果:
- 使用 字典 返回 df
# 使用 字典 返回 df
dict1 = {'id':[1, 2, 3], 'name':['张三', '李四', '王五'], 'age':[18, 19, 28]}
df4 = pd.DataFrame(dict1)
df4
运行结果:
1.2 DataFrame对象常用属性和方法
DataFrame对象常用属性和方法与Series对象的几乎相同。
print('=============== 常用属性 ===============')
# 查看维度, 返回元组类型 -> (行数, 列数), 元素个数代表维度数
print(df.shape)# 查看数据值个数, 行数*列数, NaN值也算
print(df.size)# 查看数据值, 返回numpy的ndarray类型
print(df.values)# 查看维度数
print(df.ndim)# 返回列名和列数据类型
print(df.dtypes)# 查看索引值, 返回索引值对象
print(df.index)# 查看列名, 返回列名对象
print(df.columns)
运行结果:
print('=============== 常用方法 ===============')
# 查看前5行数据
df.head()# 查看后5行数据
df.tail()# 查看df的基本信息
df.info()# 查看df对象中所有数值列的描述统计信息
df.describe()# 查看df对象中所有非数值列的描述统计信息
# exclude:不包含指定类型列
print(df)
print(df.describe(exclude=['int', 'float']))# 查看df对象中所有列的描述统计信息
# include:包含指定类型列, all代表所有类型
print(df.describe(include='all'))
print(df)# 查看df的行数
print(len(df))# 查看df各列的最小值
print(df.min())# 查看df各列的非空值个数
print(df.count())# 查看df数值列的平均值
print(df.mean())
1.3 布尔值列表获取DataFrame对象中部分数据
- 求 平均年龄
df['Age'].mean()
- 求 是否高于平均年龄
df['Age'] > df['Age'].mean()
- 求高于平均年龄的数据
df[df['Age'] > df['Age'].mean()]
- 求高于平均年龄的数据(列表)
list1 = list(df['Age'] > df['Age'].mean())
df[list1]
总结:
本质就是传入布尔值构成的列表,来获取部分数据,True所对应的数据会被保留。
1.4 DataFrame对象的运算
DataFrame和数值型变量计算时,变量会与DataFrame中的每个元素逐一进行计算,但df中存在非数值类型列时不能进行加减除运算。
两个DataFrame之间、以及df和s对象进行计算时,索引值相同的行之间会进行计算;索引值不同的行的计算结果会用NaN值(缺失值)填充。
- 观察df+2
df + 2
运行结果:
- 观察 df+df
df + df
运行结果:
- 观察 df * 2
df * 2
运行结果:
同上 df + df
- 获取 是否是 [0, 2, 4] 的下标列表( isin )
df.index
df.index.isin([0, 2, 4])
df[df.index.isin([0, 2, 4])]
运行结果:
- 获取下标为0 2 4 的数据
df[df.index.isin([0, 2, 4])]
运行结果: