使用Python的Pandas进行电子表格操作技巧
我正在自学使用Python和Pandas来处理数据。之前我用电子表格用得很烦,想找个比R更灵活的工具,所以决定试试Pandas。这个工具界面非常好用,我玩得很开心。不过,在研究各种技巧时,我发现找不到一个简单的备忘单,特别是关于如何在数据框中添加公式来引用其他列的基本电子表格功能。
我想知道有没有人能给我推荐一些代码,来完成下面这六个标准的电子表格操作,这样我可以更好地理解它是怎么工作的。如果你想查看这张图片的完整版本,可以点击这里。
如果你想自己查看这个电子表格,可以点击这里。
我对在数据框中添加列已经有点了解,主要是如何交叉引用特定单元格让我感到困惑。基本上,我期待的答案大概是这样的:
table['NewColumn']=(table['given_column']+magic-code-that-I-don't-know).astype(float-or-int-or-whatever)
如果我需要使用其他库来完成这些功能,请随时推荐。
1 个回答
5
一般来说,你应该考虑对整列进行向量化操作,而不是对特定单元格进行操作。
举个例子,如果你有一列叫做data
,想要再加一列,内容和这列一样,但每个值都乘以3,你可以用两种基本的方法来实现。第一种是“逐个单元格”操作。
df['data_prime'] = df['data'].apply(lambda x: 3*x)
第二种是向量化的方法:
df['data_prime'] = df['data'] * 3
在你的电子表格中,按列操作:
计数(如果你想从1开始,可以在右侧加1,这样就不是从0开始了):
df['count'] = pandas.Series(range(len(df))
累计总和:
df['running total'] = df['data'].cumsum()
与一个常数的差值(如果你想的话,可以把常数设置为你数据框中的某个特定值):
df['diff'] = scalar - df['data']
移动平均值:
df['moving average'] = df['running total'] / df['count'].astype('float')
来自电子表格的基本公式:
我觉得你已经有足够的信息可以自己做这个了。
条件语句:
df['new column'] = 0
mask = df['data column'] >= 3
df.loc[mask, 'new column'] = 1