1. 程式人生 > 實用技巧 >像用excel一樣用pandas

像用excel一樣用pandas

說明

假設,已經存在一個df的DataFrame。

1 讀取

檢視行列資訊
#法一
df.shape
#m,n其中m為行數,n為列數
#法二
df.info()
#<class 'pandas.core.frame.DataFrame'>
#RangeIndex: 356027 entries, 0 to 356026
#Columns: 163 entries, code to water-hardness_100g
#dtypes: float64(107), object(56)
#memory usage: 442.8+ MB
檢視列名

df.columns

獲取單元格值
  1. 獲取單元格值,df.values[m][n],其中m為行數,n為列數,二者均從0開始索引
檢視行
# 檢視單行
df.iloc[1] or df.loc['index']
# or
df.values[n] #其中n為行數
# 檢視多行
df.iloc[[1,2,3,4,8,9]]
# 檢視前7行
df.iloc[:7]
# 或者
df.loc[:7]

python中切片是不算終止一個元素的,df.iloc取前n個元素是使用':n',而loc方法是計算終止元素的,取前n元素方法就變為df.loc[:n-1]

檢視列
# 檢視單列
df['columnname']或者df.columnname,,其中columnname為列名。推薦使用df.columnname
# 檢視多列,過濾時傳入一個列陣列
df[['col1','col2']]
# 檢視前7列,由於不清楚前7列名,使用[]選擇較為困難,pandas提供iloc方法,支援切片選擇。
# :意味著選擇所有行,0:7意味著選擇從1行到第7行
df.iloc[[: , 0:7]]

2 表格操作

2.1 新增

插入新列

插入新列僅需新增一個新的值,並賦值一個Series物件即可。

df['newcolumn']= pd.Series([1,2,3,4])
插入新行

方法一:使用loc。

# 注意在插入時列必須匹配,不能有預設列。
chipo.loc[chipo.shape[0]]={'col1':value}

方法二:使用append

newdf = pd.DataFrame({'col1':value})  
# 插入一條記錄
df = df.append(newdf, ignore_index=True)

2.2 修改

修改單元格的值

如果你知道修改單元格的行和列可以使用iloc方法:

# 行和列從0開始索引
df.iloc[m, n] = targetV

2.3 刪除

使用DataFrame的drop方法

drop(labels, axis=0, level=None, inplace=False, errors='raise')
# --axis為0時表示刪除行,axis為1時表示刪除列

引數解釋,

# 刪除第一和第三行
df.drop(label=[1,3])
# 刪除名為item的列
df.drop(label=['item'], axis=1)
# 等價
df.drop(label='item', axis=1)

3 過濾和排序

過濾

新增過濾條件,

df[df.columnname=='Chicken Bowl']

如果在一個列中要選擇多個值,Series物件有isin方法可以實現該功能

df[df.columnname.isin('Chicken Bowl','huawei')]
多條件過濾

如果需要新增多個過濾條件可以使用,

df[(df.col1=='Chicken Bowl') & (df.col2==30)]

該方法返回值型別為DataFrame。

排序

DataFrame和Series都有sort_values方法,可按照某列資料做排序。排序方法返回的值依然為DataFrame。

df.sort_values(['column'])
//sort_values支援傳入陣列,所以可以指定多個排序欄位

# or 使用Series方法
df.column.sort_values()

設定排序順序

//按降序排序
df.sort_values(['col1','col2'],ascending=False)

按列序號排序

df.sort_index(axis=1, ascending=False)

單列排序會影響所有記錄重新排序,而不是影響單獨列。

3 檔案讀寫

說明:

  1. 讀取檔案方法以read開頭
  2. 寫入檔案方法以to開頭

3.1 讀取檔案

讀取excel

pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])

寫回excel

df.to_excel('foo.xlsx', sheet_name='Sheet1')

注意讀取時使用pandas靜態方法,寫回則使用DataFrame的方法

統計

//統計單列不同的值
df['columnname'].nunique()
//按某列執行分組統計
df['columnname'].value_counts()

函式 描述
count 統計非空值數量
sum 彙總值
mean 平均值
mad 平均絕對偏差
median 算數中位數
min 最小值
max 最大值
mode 眾數
abs 絕對值
prod 乘積
std 貝塞爾校正的樣本標準偏差
var 無偏方差
sem 平均值的標準誤差
skew 樣本偏度 (第三階)
kurt 樣本峰度 (第四階)
quantile 樣本分位數 (不同 % 的值)
cumsum 累加
cumprod 累乘
cummax 累積最大值
cummin 累積最小值