像用excel一樣用pandas
阿新 • • 發佈:2020-11-03
說明
假設,已經存在一個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
獲取單元格值
- 獲取單元格值,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 檔案讀寫
說明:
- 讀取檔案方法以read開頭
- 寫入檔案方法以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 | 累積最小值 |