Pandas库实战练习:掌握Python数据处理技能

练习1

编程题1:创建和操作Series
任务描述:
使用Pandas创建一个Series对象,包含以下数据:
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
完成以下任务:
创建一个Series对象series1。
使用series1创建一个新的Series对象series2,索引为['e', 'd', 'c', 'b', 'a']。
将series1和series2相加,结果存储到series_sum中。
输出series_sum。

import pandas as pd

# 创建Series对象
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
series1 = pd.Series(data, index=index)

# 创建新Series对象(索引顺序反转)
series2 = series1[['e', 'd', 'c', 'b', 'a']]

# 相加
series_sum = series1 + series2

# 输出结果
print("series1:\n", series1)
print("\nseries2:\n", series2)
print("\nseries_sum:\n", series_sum)

编程题2:DataFrame的创建和索引操作
任务描述:
使用Pandas创建一个DataFrame对象,包含以下数据:
data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'score': [85, 90, 88]
}
完成以下任务:
创建一个DataFrame对象df。
使用name列作为行索引。
添加一列gender,值为['F', 'M', 'M']。
输出df。

import pandas as pd

# 创建DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'score': [85, 90, 88]
}
df = pd.DataFrame(data)

# 设置name列为索引
df.set_index('name', inplace=True)

# 添加gender列
df['gender'] = ['F', 'M', 'M']

# 输出结果
print(df)

编程题3:数据筛选与条件操作
任务描述:
使用Pandas创建一个DataFrame对象,包含以下数据:

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'age': [23, 25, 22, 24, 23],
    'score': [85, 90, 88, 92, 87]
}
完成以下任务:
创建一个DataFrame对象df。
筛选出年龄大于23岁的学生。
将筛选结果中成绩低于90分的学生的成绩提高5分。
输出最终的筛选结果。

import pandas as pd

# 创建DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'age': [23, 25, 22, 24, 23],
    'score': [85, 90, 88, 92, 87]
}
df = pd.DataFrame(data)

# 筛选年龄大于23岁的学生
filtered = df[df['age'] > 23].copy()

# 成绩低于90分的提高5分
filtered.loc[filtered['score'] < 90, 'score'] += 5

# 输出结果
print(filtered)

编程题4:DataFrame的列操作
任务描述:
使用Pandas创建一个DataFrame对象,包含以下数据:
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
完成以下任务:
创建一个DataFrame对象df。
添加一列D,值为列A和列B的和。
删除列C。
输出最终的DataFrame。

import pandas as pd

# 创建DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

# 添加列D(A+B)
df['D'] = df['A'] + df['B']

# 删除列C
df.drop('C', axis=1, inplace=True)

# 输出结果
print(df)

编程题5:DataFrame的行操作
任务描述:
使用Pandas创建一个DataFrame对象,包含以下数据:
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
完成以下任务:
创建一个DataFrame对象df。
添加一行数据,索引为4,值为[5, 6, 7]。
删除索引为2的行。
输出最终的DataFrame。

import pandas as pd

# 创建DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

# 添加新行
df.loc[4] = [5, 6, 7]

# 删除索引为2的行
df.drop(2, inplace=True)

# 输出结果
print(df)

练习2

4.对以下数据集进行分组,并计算每个组的平均年龄。
data = {
    'Team': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Age': [25, 30, 22, 35, 24, 32],
    'Score': [85, 90, 78, 92, 72, 89]
}
要求:
按Team列分组。
计算每个组的Age列的平均值。

import pandas as pd

# 创建 DataFrame
data = {
    'Team': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Age': [25, 30, 22, 35, 24, 32],
    'Score': [85, 90, 78, 92, 72, 89]
}
df = pd.DataFrame(data)

# 按 Team 分组并计算平均年龄
grouped_age = df.groupby('Team')['Age'].mean()
print("各组的平均年龄:\n", grouped_age)

5.有两个数据集,使用Pandas的merge()函数将它们合并。
left_df = pd.DataFrame({
    'Key': ['K0', 'K1', 'K2'],
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
})

right_df = pd.DataFrame({
    'Key': ['K0', 'K1', 'K2'],
    'C': ['C0', 'C1', 'C2'],
    'D': ['D0', 'D1', 'D2']
})
要求:
使用内连接(inner join)合并两个DataFrame。
合并后的DataFrame应包含所有匹配的键。

# 创建两个 DataFrame
left_df = pd.DataFrame({
    'Key': ['K0', 'K1', 'K2'],
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
})

right_df = pd.DataFrame({
    'Key': ['K0', 'K1', 'K2'],
    'C': ['C0', 'C1', 'C2'],
    'D': ['D0', 'D1', 'D2']
})

# 使用内连接合并
merged_df = pd.merge(left_df, right_df, on='Key', how='inner')
print("合并后的结果:\n", merged_df)

6.数据分组与聚合
任务描述:
使用Pandas创建一个DataFrame对象,包含以下数据:
data = {
    'Category': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
    'Value1': [10, 20, 30, 40, 50, 60, 70, 80],
    'Value2': [15, 25, 35, 45, 55, 65, 75, 85]
}
完成以下任务:
创建一个DataFrame对象df。
按Category列进行分组,并计算每组中Value1和Value2的平均值。
在分组的基础上,计算每组中Value1和Value2的标准差。
输出最终的分组结果。

# 创建 DataFrame
data = {
    'Category': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
    'Value1': [10, 20, 30, 40, 50, 60, 70, 80],
    'Value2': [15, 25, 35, 45, 55, 65, 75, 85]
}
df = pd.DataFrame(data)

# 按 Category 分组,计算均值和标准差
result = df.groupby('Category').agg({
    'Value1': ['mean', 'std'],
    'Value2': ['mean', 'std']
})
print("分组聚合结果:\n", result)

7.数据合并与去重
任务描述:
使用Pandas创建两个DataFrame对象,包含以下数据:
data1 = {
    'ID': [1, 2, 3, 4],
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40]
}

data2 = {
    'ID': [3, 4, 5, 6],
    'Name': ['Charlie', 'David', 'Eve', 'Frank'],
    'Age': [35, 40, 45, 50]
}
完成以下任务:
创建两个DataFrame对象df1和df2。
将df1和df2按ID列进行合并,使用外连接(outer)。
在合并后的DataFrame中,删除重复的行(基于ID列)。
输出最终的合并结果。

# 创建两个 DataFrame
data1 = {
    'ID': [1, 2, 3, 4],
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40]
}

data2 = {
    'ID': [3, 4, 5, 6],
    'Name': ['Charlie', 'David', 'Eve', 'Frank'],
    'Age': [35, 40, 45, 50]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 外连接合并,并去重
merged_df = pd.merge(df1, df2, on='ID', how='outer', suffixes=('_1', '_2'))
merged_df = merged_df.drop_duplicates(subset='ID', keep='first')
print("最终合并结果:\n", merged_df)

作者:linn125

物联沃分享整理
物联沃-IOTWORD物联网 » Pandas库实战练习:掌握Python数据处理技能

发表回复