python dataframe相关的用法
时间: 2025-07-19 17:34:46 浏览: 1
<think>好的,用户现在需要关于Python中DataFrame的相关用法的解释。首先,我需要回忆DataFrame的基本概念,它是pandas库中的二维表格数据结构,类似于Excel的表格。接下来,用户可能想知道常用的操作,比如创建、查看数据、数据筛选、修改、合并、分组聚合等。
首先,创建DataFrame的方法,比如从字典、列表、CSV文件读取等。然后,基本的查看方法,比如head()、tail()、info()、describe()。接着是数据选择,比如通过列名、行号(loc和iloc),条件筛选。数据修改包括新增列、删除列、替换值。合并操作有concat和merge,分组聚合用groupby。还有处理缺失值,比如dropna()、fillna()。可能还要提到排序,sort_values(),以及统计函数如sum()、mean()等。
需要注意用户可能的实际应用场景,比如数据清洗、分析,所以需要覆盖常用功能。同时,要给出示例代码,让解释更清晰。比如创建DataFrame的示例,用字典或者读取CSV;筛选数据的示例,用条件表达式;分组聚合的例子,比如按某列分组后计算平均值。
另外,用户可能对高级操作感兴趣,比如透视表pivot_table,或者时间序列处理,但可能需要先覆盖基础。需要确保解释简洁明了,重点突出常用方法,避免过于复杂。还要注意术语的准确性,比如区分loc(标签索引)和iloc(位置索引)的不同。
现在需要组织这些内容,结构清晰,先介绍DataFrame是什么,然后分点讲解常用操作,每个操作给出简短的解释和示例代码。最后,确保相关问题部分符合要求,提出3-5个相关问题,覆盖用户可能的后续疑问,比如处理缺失值、合并数据的区别、分组聚合的应用等。
</think>在Python中,`DataFrame`是`pandas`库的核心数据结构之一,用于存储二维表格数据(行和列),类似Excel表格或SQL表。以下是`DataFrame`的常见用法及示例:
### **1. 创建DataFrame**
通过多种数据源创建,如字典、列表、CSV文件等。
**示例**:
```python
import pandas as pd
# 从字典创建(键为列名,值为列数据)
data = {"姓名": ["张三", "李四", "王五"], "年龄": [25, 30, 28], "分数": [85.5, 92.0, 78.5]}
df = pd.DataFrame(data)
# 从列表创建(需指定列名)
rows = [["张三", 25, 85.5], ["李四", 30, 92.0]]
df = pd.DataFrame(rows, columns=["姓名", "年龄", "分数"])
# 从CSV文件读取(最常用)
df = pd.read_csv("data.csv") # 读取本地CSV文件
```
### **2. 查看数据基本信息**
- `head(n)`:查看前`n`行(默认5行)。
- `tail(n)`:查看后`n`行。
- `info()`:显示列名、数据类型、非空值数量。
- `describe()`:统计数值列的均值、标准差、分位数等。
- `shape`:返回`(行数, 列数)`。
**示例**:
```python
print(df.head(2)) # 前2行
df.info() # 输出列信息(如:姓名 object, 年龄 int64...)
print(df.shape) # 输出 (3, 3)(3行3列)
```
### **3. 数据选择与筛选**
- **按列选择**:直接通过列名(`df["列名"]`)或点语法(`df.列名`)。
- **按行选择**:
- `loc[]`:基于行标签(索引名)选择(如`df.loc[0]`选第0行)。
- `iloc[]`:基于行位置(整数索引)选择(如`df.iloc[0:2]`选前2行)。
- **条件筛选**:通过布尔表达式过滤行(如筛选年龄>25的行)。
**示例**:
```python
# 选"分数"列
scores = df["分数"]
# 选第0行到第1行(含第1行)
rows = df.iloc[0:2]
# 筛选年龄>25且分数≥90的行
filtered_df = df[(df["年龄"] > 25) & (df["分数"] >= 90)]
```
### **4. 数据修改与新增**
- **新增列**:直接赋值(如新增“是否及格”列)。
- **删除列/行**:`drop()`方法(`axis=1`删列,`axis=0`删行)。
- **替换值**:`replace()`方法或直接赋值。
**示例**:
```python
# 新增列:根据分数判断是否及格(分数≥60为及格)
df["是否及格"] = df["分数"].apply(lambda x: "是" if x >= 60 else "否")
# 删除"年龄"列
df = df.drop("年龄", axis=1)
# 替换姓名"王五"为"王六"
df["姓名"] = df["姓名"].replace("王五", "王六")
```
### **5. 数据合并与分组**
- **合并**:`pd.concat()`(按行或列拼接)、`pd.merge()`(类似SQL的JOIN)。
- **分组聚合**:`groupby()`按某列分组,结合`sum()`、`mean()`等统计函数。
**示例**:
```python
# 合并两个DataFrame(按行拼接)
df2 = pd.DataFrame({"姓名": ["赵六"], "分数": [88.0]})
combined_df = pd.concat([df, df2], ignore_index=True) # 重置索引
# 按"是否及格"分组,计算平均分数
grouped = df.groupby("是否及格")["分数"].mean()
```
### **6. 处理缺失值**
- `isnull()`/`notnull()`:检测缺失值(`NaN`)。
- `dropna()`:删除含缺失值的行/列。
- `fillna()`:填充缺失值(如用均值、中位数)。
**示例**:
```python
# 检查是否有缺失值
print(df.isnull().sum()) # 各列缺失值数量
# 删除有缺失值的行
df_clean = df.dropna()
# 用分数的均值填充缺失值
df["分数"] = df["分数"].fillna(df["分数"].mean())
```
阅读全文
相关推荐


















