DataFrame()对象--Pandas

本文详细介绍了Pandas DataFrame的创建方法,包括从Series的字典、Dicts、ndarrays、lists以及Series创建。重点讲解了DataFrame的参数如data、index、columns、dtype和copy的作用,并通过实例展示了如何通过行标签、行索引和布尔值选择行。此外,还涵盖了新增和删除列的操作,以及DataFrame与Numpy的互用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. DataFrame的创建

DateFrame对象是Pandas最常用的数据结构,是由不同类型的列组成的二维数据表结构,类似于EXCEL表,语法格式如下:

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)

1.1 函数参数:data

参数含义
data创建DataFrame的数据

DataFrame的data参数接收多种类型的输入:

1.1.1 Series 的字典

1.1.1.1 Series的index不同,创建的DataFrame索引index取并集

两个索引不同的Series组成的字典构成DataFrame,生成的DataFrame的结果将是两个Series索引的并集,没有对应的数据以空值NaNbu补充。在这里插入图片描述

1.1.1.2 创建DataFrame时指定Index

当指定索引,生成的DataFrame将仅保留指定的索引对应的值,其他值将被丢弃。

sr = pd.DataFrame({'a': pd.Series(np.random.randint(10, 20, 4), index=['aa', 'bb', 'cc', 'dd']),
                   'b': pd.Series(np.random.randint(0, 9, 6), index=['aa', 'cc', 'dd', 'ee', 'ff', 'gg'])},
                  index=['aa', 'cc', 'ff'])
print(sr)

在这里插入图片描述

1.1.1.3 指定的columns列名不一致

对于列名,默认按照字典键的有序列表,若指定列名,则列名与字典键相同时,数据存在,若列名不存在字典的键中,则以控制NaN填充

sr = pd.DataFrame({'a': pd.Series(np.random.randint(10, 20, 4), index=['aa', 'bb', 'cc', 'dd']),
                   'b': pd.Series(np.random.randint(0, 9, 6), index=['aa', 'cc', 'dd', 'ee', 'ff', 'gg'])},
                  index=['aa', 'cc', 'cc','ee'],columns=['a','c'])
print(sr)

在这里插入图片描述

1.1.1.4 获取行/列名

DataFrame的行名和列名可以通过属性index与columns获取
在这里插入图片描述

1.1.2 Dicts 的字典

在这里插入图片描述

1.1.3 ndarrays 的字典

构成DataFrame的ndarrays的长度必须相同,若指定索引Index,则传入的索引index的长度与必须与ndarray数据的长度相同。默认索引为range(n):n为数据长度
在这里插入图片描述

1.1.4 lists 的字典

在这里插入图片描述

1.1.5 Series

在这里插入图片描述

1.2 函数参数:index

参数含义
data创建DataFrame的数据
index产生的DataFrame的索引,当数据中不包含index且创建时没有输入Index参数内容,默认为range(n)

1.2.1 不指定index

在这里插入图片描述

1.2.2 指定index

在这里插入图片描述

1.2.3 当data为Series

当输入数据为Series时,产生DataFrame的结果会与Series的索引一致,当创建DataFrame时如果指定的index与Series的索引不一致,DataFrame将去掉指定索引中不存在的数据
在这里插入图片描述

1.3 函数参数:columns

参数含义
data创建DataFrame的数据
index产生的DataFrame的索引,当数据中不包含index且创建时没有输入Index参数内容,默认为range(n)
columns创建DataFrame的列标签,当data中没有传入列标签时,默认为range(n);当data中传入了列标签,此时的columns参数作用是筛选

1.3.1 data中未指定列标签

在这里插入图片描述

1.3.2 data中指定了列标签

此时的column参数作用为筛选
在这里插入图片描述

1.4 函数参数:dtype

参数含义
data创建DataFrame的数据
index产生的DataFrame的索引,当数据中不包含index且创建时没有输入Index参数内容,默认为range(n)
columns创建DataFrame的列标签,当data中没有传入列标签时,默认为range(n);当data中传入了列标签,此时的columns参数作用是筛选
dtypeDataFrame中的数据类型

在这里插入图片描述

1.5 函数参数:copy

参数含义
data创建DataFrame的数据
index产生的DataFrame的索引,当数据中不包含index且创建时没有输入Index参数内容,默认为range(n)
columns创建DataFrame的列标签,当data中没有传入列标签时,默认为range(n);当data中传入了列标签,此时的columns参数作用是筛选
dtypeDataFrame中的数据类型
copy产生的DataFrame是复制data中的数据,当data是列表或字典构成的数据时,默认copy=True;当data为Series,ndarray数组或者DataFrame时 ,默认copy=False

2. DataFrame常用操作

DataFrame在选择、增加、删除列上的操作与字典类似。

2.1 索引与切片

2.1.1 选择列

order = pd.read_excel('C:\\Users\\changyanhua\\Desktop\\order.xlsx')
print(order)

### 2.1.1 选择某列
print(order['支付方式'])
print(type(order['支付方式']))
print(order['支付方式'].name)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.1 行选择

行选择的方法较多,可以通过行标签选择,通过行索引选择,还可以通过切片和布尔型数据选择

2.1.1.1 通过行标签选择
df = pd.DataFrame({'a': np.arange(0, 10, 2),
                   'b': np.random.randint(90, 100, 5),
                   'c': np.random.rand(5)}, index=list('stpkg'))
print(df)
# 通过行标签选择
print(df.loc['p'])

在这里插入图片描述
返回一个Series对象,对象index标签是DataFrame的列名

2.1.1.2 通过行索引号选择
# 通过行索引号选择
df = pd.DataFrame({'a': np.arange(0, 10, 2),
                   'b': np.random.randint(90, 100, 5),
                   'c': np.random.rand(5)}, index=list('stpkg'))
print(df)
print(df.iloc[2])

order = pd.read_excel('C:\\Users\\changyanhua\\Desktop\\order.xlsx')
print(order.head(10))
print(order.iloc[0])

在这里插入图片描述
在这里插入图片描述

2.1.13 通过行索引切片选择
order = pd.read_excel('C:\\Users\\changyanhua\\Desktop\\order.xlsx')
print(order.head(10))
# 通过行索引号切片选择
print(order.iloc[2:5])
print(order[2:5])

在这里插入图片描述

2.1.1.4 通过布尔值选择
df = pd.DataFrame({'a': np.arange(0, 10, 2),
                   'b': np.random.randint(90, 100, 5),
                   'c': np.random.rand(5)}, index=list('stpkg'))
print(df)
# 通过布尔值向量选择行
print(df[[True, False, True, True, False]])

在这里插入图片描述

2.2 新增列

对DataFrame中不存在的列名进行操作为新增,对DataFrame存在的列名进行操作为替换

# 新增列
order['平均花费']=order['销售额']/order['数量']
print(order)

在这里插入图片描述
替换的情况:
在这里插入图片描述
插入标量,会自动运用广播机制生成与DataFrame相同长度的数据

# 插入标量

order['记录标记'] = 1
print(order.head())

在这里插入图片描述

默认插入列在DataFrame的最后,可以通过DataFrame.insert()方法,指定插入位置

order.insert(3,'国家','中国')
print(order.head())

在这里插入图片描述

2.3 删除列

2.3.1 方法一:del()函数

# 删除列
del order['订单编号']
print(order.info())

在这里插入图片描述

2.3.2 pop()函数

order.pop('订单日期')
print(order.info())

在这里插入图片描述

3.DataFrame的计算

DataFrame与Numpy的很多操作时互用的,大部分的Numpy函数可以直接被DataFrame和Series调用

参考文:https://pandas.pydata.org/docs/user_guide/dsintro.html#from-dict-of-ndarrays-lists

### 关于Pandas DataFrame对象的使用指南 #### 创建DataFrame Pandas中的`DataFrame`是一种二维表格型数据结构,具有不同类型的列。可以通过多种方式创建`DataFrame`实例[^2]。 ```python import pandas as pd data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'San Francisco', 'Los Angeles']} df = pd.DataFrame(data) print(df) ``` 这段代码展示了如何通过传递一个字典给`pd.DataFrame()`来创建一个新的`DataFrame`,其中字典的键作为列名而值则构成各列的内容。 #### 查看基本属性和统计信息 一旦有了`DataFrame`,就可以轻松访问其基本信息以及统计数据: - `shape`: 返回行数和列数。 - `columns`: 列标签列表。 - `index`: 行标签范围。 - `describe()`: 对数值列计算汇总统计量。 ```python # 获取DataFrame的基本属性 print("Shape:", df.shape) print("\nColumns:\n", df.columns) print("\nIndex:\n", df.index) print("\nSummary statistics:\n", df.describe()) ``` 上述命令能够帮助快速理解所处理的数据集的整体情况。 #### 访问数据子集 为了获取特定部分的数据,可以利用位置(`iloc`)或标签(`loc`)索引来选取所需元素;还可以基于条件筛选符合条件的记录。 ```python # 使用.loc[]按标签选择单个单元格 cell_value = df.loc[0, "Name"] # 使用.iloc[]按整数位置选择多行或多列 subset = df.iloc[:2, :] # 条件过滤返回满足年龄大于等于30岁的所有行 filtered_rows = df[df['Age'] >= 30] ``` 这些操作允许灵活地提取感兴趣的部分数据以便进一步分析。 #### 转换为其他格式 有时可能需要将以`DataFrame`形式存储的数据导出到外部文件或是将其转换成另一种内部表示形式。例如,可将整个表保存为CSV文件或将某些列映射至字典中。 ```python # 导出为CSV文件 df.to_csv('output.csv') # 将两列转为字典 {key: value} name_age_dict = dict(zip(df.Name, df.Age)) ``` 此功能对于与其他应用程序交互或准备用于机器学习模型训练非常有用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值