引言
本文的目的,是向您展示如何使用pandas 來執(zhí)行一些常見的Excel任務。有些例子比較瑣碎,但我覺得展示這些簡單的東西與那些你可以在其他地方找到的復雜功能同等重要。作為額外的福利,我將會進行一些模糊字符串匹配,以此來展示一些小花樣,以及展示pandas是如何利用完整的Python模塊系統(tǒng)去做一些在Python中是簡單,但在Excel中卻很復雜的事情的。
有道理吧?讓我們開始吧。
為某行添加求和項
我要介紹的第一項任務是把某幾列相加然后添加一個總和欄。
首先我們將excel 數(shù)據(jù) 導入到pandas數(shù)據(jù)框架中。
import pandas as pdimport numpy as npdf = pd.read_excel("excel-comp-data.xlsx")df.head()
我們想要添加一個總和欄來顯示Jan、Feb和Mar三個月的銷售總額。
在Excel和pandas中這都是簡單直接的。對于Excel,我在J列中添加了公式sum(G2:I2)。在Excel中看上去是這樣的:
下面,我們是這樣在pandas中操作的:
df["total"] = df["Jan"] + df["Feb"] + df["Mar"]df.head()
接下來,讓我們對各列計算一些匯總信息以及其他值。如下Excel表所示,我們要做這些工作:
如你所見,我們在表示月份的列的第17行添加了SUM(G2:G16),來取得每月的總和。
進行在pandas中進行列級別的分析很簡單。下面是一些例子:
df["Jan"].sum(), df["Jan"].mean(),df["Jan"].min(),df["Jan"].max() (1462000, 97466.666666666672, 10000, 162000)
現(xiàn)在我們要把每月的總和相加得到它們的和。這里pandas和Excel有點不同。在Excel的單元格里把每個月的總和相加很簡單。由于pandas需要維護整個DataFrame的完整性,所以需要一些額外的步驟。
首先,建立所有列的總和欄
sum_row=df[["Jan","Feb","Mar","total"]].sum()sum_row Jan 1462000Feb 1507000Mar 717000total 3686000dtype: int64
這很符合直覺,不過如果你希望將總和值顯示為表格中的單獨一行,你還需要做一些微調。
我們需要把數(shù)據(jù)進行變換,把這一系列數(shù)字轉換為DataFrame,這樣才能更加容易的把它合并進已經(jīng)存在的數(shù)據(jù)中。T 函數(shù)可以讓我們把按行排列的數(shù)據(jù)變換為按列排列。
df_sum=pd.DataFrame(data=sum_row).Tdf_sum
新聞熱點
疑難解答