📅  最后修改于: 2023-12-03 15:25:13.321000             🧑  作者: Mango
Pandas 是 Python 中经常使用的数据分析工具包之一,其核心数据类型之一就是 DataFrame。DataFrame 是一个二维表格,可以根据索引和标签来存储数据,并支持各种数据操作,如过滤、排序、分组、聚合、合并等。
本文将介绍如何将 DataFrame 与 Pandas 结合,并提供一些示例代码来说明其使用方法。
可以通过多种方式创建 DataFrame,例如使用字典、嵌套列表、CSV 文件等方式。
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 32, 18, 47],
'gender': ['F', 'M', 'M', 'M']}
df = pd.DataFrame(data)
print(df)
输出的结果如下:
name age gender
0 Alice 25 F
1 Bob 32 M
2 Charlie 18 M
3 David 47 M
import pandas as pd
data = [['Alice', 25, 'F'], ['Bob', 32, 'M'], ['Charlie', 18, 'M'], ['David', 47, 'M']]
df = pd.DataFrame(data, columns=['name', 'age', 'gender'])
print(df)
输出的结果与使用字典方式创建的 DataFrame 相同。
import pandas as pd
df = pd.read_csv('data.csv')
print(df)
其中,data.csv
文件内容如下:
name,age,gender
Alice,25,F
Bob,32,M
Charlie,18,M
David,47,M
Pandas 提供了各种数据操作方法,包括过滤、排序、分组、聚合、合并等。
可以使用布尔索引来对 DataFrame 进行过滤操作。例如,要找出年龄大于等于 30 岁的人,可以使用以下代码:
age_filter = df['age'] >= 30
print(df[age_filter])
输出的结果如下:
name age gender
1 Bob 32 M
3 David 47 M
可以使用 sort_values
方法来对 DataFrame 进行排序操作。例如,要按年龄降序排列,可以使用以下代码:
age_desc = df.sort_values(by='age', ascending=False)
print(age_desc)
输出的结果如下:
name age gender
3 David 47 M
1 Bob 32 M
0 Alice 25 F
2 Charlie 18 M
可以使用 groupby
方法来对 DataFrame 进行分组操作。例如,要按性别分组,可以使用以下代码:
gender_group = df.groupby(by='gender')
for gender, group in gender_group:
print(gender)
print(group)
输出的结果如下:
F
name age gender
0 Alice 25 F
M
name age gender
1 Bob 32 M
2 Charlie 18 M
3 David 47 M
可以使用 agg
方法来对 DataFrame 进行聚合操作。例如,要求出每个性别的平均年龄和最大年龄,可以使用以下代码:
gender_agg = gender_group['age'].agg(['mean', 'max'])
print(gender_agg)
输出的结果如下:
mean max
gender
F 25.0 25
M 32.333333 47
可以使用 merge
方法来对两个 DataFrame 进行合并操作。例如,假设现在有另一个 DataFrame,存储每个人的工资信息,并且名称和性别与刚才的 DataFrame 相同,可以使用以下代码将这两个 DataFrame 合并:
import pandas as pd
salary = pd.DataFrame({'name': ['Alice', 'Charlie', 'David'], 'gender': ['F', 'M', 'M'], 'salary': [3500, 2800, 4400]})
df_merged = pd.merge(df, salary, on=['name', 'gender'])
print(df_merged)
输出的结果如下:
name age gender salary
0 Alice 25 F 3500
1 Charlie 18 M 2800
2 David 47 M 4400
通过将 DataFrame 与 Pandas 结合,可以对数据进行各种复杂的操作,以实现数据分析和挖掘。希望本文可以帮助程序员们更好地掌握 Pandas 数据操作的技巧。