返回

Pandas:掌握单列和多列操作的艺术

数据库

数据挖掘:揭秘 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)]
  • 使用 lociloc 方法,过滤特定行或列,就像一个数据定位器:
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 的单列和多列操作是数据分析领域的必备技能。通过熟练应用这些技术,你可以有效地处理数据,提取有价值的见解,并做出明智的决策。

常见问题解答

  1. 如何过滤 pandas 数据框中的特定值?

    • 使用 query()isin() 方法。
  2. 如何对 pandas 数据框的列应用函数?

    • 使用 apply()transform() 方法。
  3. 如何对 pandas 数据框的多列进行分组并聚合?

    • 使用 groupby()agg() 方法。
  4. 如何过滤符合多个条件的 pandas 数据框中的行?

    • 使用 query() 方法或将多个条件组合到 lociloc 方法中。
  5. 如何创建新的 pandas 数据框列?

    • 使用 assign() 方法或使用 apply()transform() 方法创建新的列。