最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程。本篇介绍 pandas 的 DataFrame 对列 (Column) 的处理方法。示例数据请通过明哥的gitee进行下载。
增加计算列
pandas 的 DataFrame,每一行或每一列都是一个序列 (Series)。比如:
import pandas as pd
df1 = pd.read_excel('./excel-comp-data.xlsx');
此时,用 type(df1['city'],显示该数据列(column)的类型是 pandas.core.series.Series。理解每一列都是 Series 非常重要,因为 pandas 基于 numpy,对数据的计算都是整体计算。深刻理解这个,才能理解后面要说的诸如 apply() 函数等。
如果列名 (column name)没有空格,则列有两种方式表达:
df1['city']
df1.city
如果列名有空格,或者创建新列(即该列不存在,需要创建,第一次使用的变量),则只能用第一种表达式。
假设我们要对三个月的数据进行汇总,可以使用下面的方法。实际上就是创建一个新的数据列:
# 由于是创建,不能使用 df.Total
df1['Total'] = df1['Jan'] + df1['Feb'] + df1['Mar']
df1['Jan'] 到 df1['Mar'] 都是 Series,所以使用 + 号,可以得到三个 Series 对应位置的数据合计。
当然,也可以用下面的方式:
df1['total'] = df1.Jan + df1.Feb + df1.Mar
增加条件计算列
假设现在要根据合计数 (Total 列),当 Total 大于 200,000 ,类别为 A,否则为 B。在 Excel 中实现用的是 IF 函数,但在 pandas 中需要用到 numpy 的 where 函数:
df1['category'] = np.where(df1['total'] > 200000, 'A', 'B')
在指定位置插入列
上面方法增加的列,位置都是放在最后。如果想要在指定位置插入列,要用 dataframe.insert() 方法。假设我们要在 state 列后面插入一列,这一列是 state 的简称 (abbreviation)。在 Excel 中,根据 state 来找到 state 的简称 ,一般用 VLOOKUP 函数。我们用两种方法来实现,第一种方法,简称来自 Python 的 dict。
数据来源:
stat