Python---数据分析(Pandas六:二维数组DataFrame,DataFrame的创建,DataFrame的属性)
一、 二维数组DataFrame
DataFrame 是 Pandas 中的一个表格型的数据结构,包含有多列的数据,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame 即有行索引也有列索引,可以被看做是由 Series 组成的字典。
二、DataFrame的创建
在Pandas中,使用DataFrame来创建二维数组DataFrame
class pandas.DataFrame(data=None, index=None, columns=None,
dtype=None, copy=None)
描述 | 说明 |
---|---|
data | 列表,其中每个元素是一行数据。 字典,其中键是列名,值是列值(列表或数组)。 2d-Ndarray。 Series对象,每个 Series成为一列 |
index | 行标签,如果没有指定,默认是整数索引[0, ..., n-1],其中 n 是数据中的行数。 |
columns | 列标签,如果没有指定,则列标签从数据源中推断。 |
dtype | 指定某列的数据类型。如果指定,则所有列都将转换为指定的数据类型。 |
copy | 布尔值,默认为False。如果为True,则复制数据;如果为False,则尽可 能避免复制数据 |
2.1、使用列表创建
import pandas as pd
# 创建一个包含学生信息的嵌套列表,每个子列表代表一个学生的姓名、年龄和成绩
data_list = [
['小明', 20, 85],
['小红', 18, 90],
['小刚', 22, 88]
]
# 定义列名,分别对应姓名、年龄和成绩
columns = ['姓名', '年龄', '成绩']
# 使用pandas库创建一个DataFrame,将数据列表和列名作为参数传入
df = pd.DataFrame(data_list, columns=columns)
# 打印DataFrame以查看数据
print(df)
2.2、使用字典创建
可以使用一个字典来创建DataFrame,其中字典的键将作为列名,字典的值可以是列 表、数组等可迭代对象,它们的长度要一致,代表每一列的数据。
import pandas as pd
# 定义一个字典,其中包含两组数据:姓名和年龄
data = {
'Name': ['Tom', 'Nick', 'John'], # 'Name' 键对应一个包含姓名的列
'Age': [20, 21, 22] # 'Age' 键对应一个包含年龄的列
}
# 使用pd.DataFrame()函数将字典转换为DataFrame对象
# 这里,data字典中的键自动成为DataFrame的列名,值成为列的数据
df = pd.DataFrame(data)
# 打印DataFrame对象,查看其内容
print(df)
2.3、使用Ndarray数组创建
import pandas as pd
# 创建三个pandas Series对象
s1 = pd.Series(['小明', '小红', '小刚'], name='姓名')
s2 = pd.Series([20, 18, 22], name='年龄')
s3 = pd.Series([85, 90, 88], name='成绩')
# 将Series对象组合成一个字典,键是Series的名称,值是Series本身
# 然后将这个字典传递给DataFrame构造函数来创建一个DataFrame
df = pd.DataFrame({s1.name: s1, s2.name: s2, s3.name: s3})
# 打印DataFrame对象,查看其内容
print(df)
import pandas as pd
import numpy as np
# 定义一个二维Ndarray数组,其中包含两组数据:姓名和年龄
data_array = np.array([
['Tom', 20],
['Nick', 21],
['John', 19]
])
# 使用pd.DataFrame()函数将二维数组转换为DataFrame对象
df = pd.DataFrame(data_array, columns=['Name', 'Age'])
# 打印
print(df)
2.4、使用Series创建
如果有多个Series对象,也可以将它们组合成一个DataFrame。
import pandas as pd
# 创建三个pandas Series对象
s1 = pd.Series(['小明', '小红', '小刚'], name='姓名')
s2 = pd.Series([20, 18, 22, 0], name='年龄')
s3 = pd.Series([85, 90, 88], name='成绩')
s4 = pd.Series(name='test')
# 使用concat拼接,并指定轴为1
df = pd.concat([s1, s2, s3, s4], axis=1)
# 打印DataFrame对象,查看其内容
print(df)
三、DataFrame的属性
import pandas as pd
data = {
'姓名': ['小明', '小红', '小刚'],
'年龄': [20, 18, 22],
'成绩': [85, 90, 88]
}
df = pd.DataFrame(data, index=[3, 4, 5])
print(df)
3.1、 index
返回DataFrame的行索引。
print(df.index)
#Index([3, 4, 5], dtype='int64')
3.2、 columns
返回DataFrame的列名。
print(df.columns)
#Index(['姓名', '年龄', '成绩'], dtype='object')
3.3、 values
返回DataFrame中数据的Ndarray表示
print(df.values)
# [['小明' 20 85]
# ['小红' 18 90]
# ['小刚' 22 88]]
3.4、 dtypes
返回每列的数据类型。
print(df.dtypes)
# 姓名 object
# 年龄 int64
# 成绩 int64
# dtype: object
3.5 、shape
返回DataFrame的形状(行数,列数)。
print(df.shape)
#(3, 3)
3.6、 size
返回DataFrame中的元素数量。
print(df.size)
#9
3.7、 empty
返回DataFrame是否为空。
import pandas as pd
import numpy as np
data = [None]
df = pd.DataFrame(data, index=['a'])
print(df)
print(df.empty)
3.8 、T
返回DataFrame的转置。
import pandas as pd
data = {
'姓名': ['小明', '小红', '小刚'],
'年龄': [20, 18, 22],
'成绩': [85, 90, 88]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df)
res = df.T
print(res)
3.9、 axes
返回行轴和列轴的列表。
import pandas as pd
data = {
'姓名': ['小明', '小红', '小刚'],
'年龄': [20, 18, 22],
'成绩': [85, 90, 88]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df)
print(df.axes)
3.10、 ndim
返回DataFrame的维度数。对于标准的二维DataFrame,这个值通常是2。
import pandas as pd
data = {
'姓名': ['小明', '小红', '小刚'],
'年龄': [20, 18, 22],
'成绩': [85, 90, 88]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df)
print(df.ndim)
3.11 、attrs
允许用户存储DataFrame的元数据,它是一个字典,可以用来存储任意与 DataFrame相关的额外信息。
import pandas as pd
data = {
'姓名': ['小明', '小红', '小刚'],
'年龄': [20, 18, 22],
'成绩': [85, 90, 88]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df)
df.attrs['creator'] = '哈哈哈哈哈哈哈哈哈哈哈'
df.attrs['created_at'] = '2025-3-8'
print(df.attrs)