返回
Pandas:掌握单列和多列操作的艺术
数据库
2024-01-01 09:43:53
数据挖掘:揭秘 pandas 中的单列和多列操作
简介
Python pandas 是一个数据分析领域的宝藏,它为数据科学家和分析师提供了丰富的工具,使他们能够轻松地处理和操作数据。在本文中,我们将深入探讨 pandas 中单列和多列操作的奥秘,帮助你释放数据的力量,发现有价值的见解。
单列操作
过滤:抽丝剥茧,分离所需数据
- 使用
query()
方法,根据特定条件过滤行,就像一个数据筛子:
df = df[df['列名'] > 50]
- 使用
isin()
方法,过滤包含指定值的行,就像一个值猎人:
df = df[df['列名'].isin(['a', 'b', 'c'])]
变换:数据变形,释放新洞察
- 使用
apply()
方法,对每行应用函数,就像一个魔术师:
df['新列名'] = df['列名'].apply(lambda x: x**2)
- 使用
map()
方法,将字典或其他映射应用到列,就像一个数据变色龙:
df['列名'] = df['列名'].map({'a': 1, 'b': 2, 'c': 3})
聚合:数据浓缩,提炼精华
- 使用
agg()
方法,对列执行聚合操作,就像一个数据蒸馏器:
df['列名'].agg(['sum', 'mean', 'max'])
多列操作
过滤:多条件筛选,精确定位
- 使用
query()
方法,过滤符合多个条件的行,就像一个多条件筛子:
df = df[(df['列名1'] > 50) & (df['列名2'] < 100)]
- 使用
loc
和iloc
方法,过滤特定行或列,就像一个数据定位器:
df.loc[df['列名1'] > 50, ['列名2', '列名3']]
df.iloc[1:3, 2:4]
变换:多维变形,全面掌控
- 使用
apply()
方法,对多列应用函数,按行或按列,就像一个数据魔方:
df[['列名1', '列名2']] = df[['列名1', '列名2']].apply(lambda x: x / 100, axis=0)
df = df.apply(lambda x: x + 1, axis=1)
- 使用
transform()
方法,对多列应用函数,同时保持原始数据,就像一个数据克隆器:
df['新列名'] = df[['列名1', '列名2']].transform(lambda x: x.max())
聚合:多列分组,深度挖掘
- 使用
groupby()
和agg()
方法,对多列分组并执行聚合操作,就像一个数据分类器:
df.groupby(['列名1', '列名2'])['列名3'].agg(['sum', 'mean'])
代码示例:客户数据分析
让我们考虑一个包含客户数据的 pandas 数据框:
df = pd.DataFrame({
'客户 ID': [1, 2, 3, 4, 5],
'姓名': ['约翰', '玛丽', '迈克', '安妮', '鲍勃'],
'年龄': [25, 30, 28, 32, 26],
'城市': ['纽约', '洛杉矶', '旧金山', '伦敦', '巴黎']
})
使用 pandas,我们可以对客户数据进行一系列单列和多列操作:
单列操作
- 过滤年龄大于 30 岁的客户:
df_filtered = df[df['年龄'] > 30]
- 将城市列的值转换为大写:
df['城市'] = df['城市'].apply(lambda x: x.upper())
多列操作
- 过滤年龄大于 30 岁并且居住在纽约的客户:
df_filtered = df[(df['年龄'] > 30) & (df['城市'] == '纽约')]
- 创建一个新列,按年龄分组后统计每个年龄组的客户数量:
df['年龄组'] = df['年龄'].groupby(df['年龄']).transform('count')
结论
掌握 Python pandas 的单列和多列操作是数据分析领域的必备技能。通过熟练应用这些技术,你可以有效地处理数据,提取有价值的见解,并做出明智的决策。
常见问题解答
-
如何过滤 pandas 数据框中的特定值?
- 使用
query()
或isin()
方法。
- 使用
-
如何对 pandas 数据框的列应用函数?
- 使用
apply()
或transform()
方法。
- 使用
-
如何对 pandas 数据框的多列进行分组并聚合?
- 使用
groupby()
和agg()
方法。
- 使用
-
如何过滤符合多个条件的 pandas 数据框中的行?
- 使用
query()
方法或将多个条件组合到loc
或iloc
方法中。
- 使用
-
如何创建新的 pandas 数据框列?
- 使用
assign()
方法或使用apply()
或transform()
方法创建新的列。
- 使用