一、 二维数组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的形状(行数,列数)。
3.6、 size
返回DataFrame中的元素数量。
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)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |