python之DataFrame篇

DataFrame是python中Pandas庫中的一種數據結構,類似excel,是一種二維表。DataFrame的單元格可以存放數值,字符串等類型數據。python在處理excel數據時通常都會用DataFrame來讀。

1.讀數據
%%time
import pandas as pd
df = pd.read_excel('2019-2.xlsx',sheet_name=None)

%%time可以計算代碼的運行時間,但是要注意的是一定放在所有代碼的第一行,即使第一行是註釋也要放在註釋上面,否則會報錯。
output:

CPU times: user 8min 54s, sys: 11.6 s, total: 9min 5s
Wall time: 8min 47s
2.獲取excel中的所有sheet
import openpyxl
wb = openpyxl.load_workbook('2019-2.xlsx')
# 獲取workbook中所有的表格
sheets = wb.sheetnames
print(sheets)

ouput:

['0201-0216', '0217-0223', '0224-0228']

則這個excel文件中有名爲’0201-0216’, ‘0217-0223’, '0224-0228’的三種表,讀取某張表可以直接用df[‘xxx’]表示。

3.查看數據

3.1 查看數據類型:

df.dtypes

3.2 查看頭尾幾行的數據

df.head()
df.tail()

默認5行,可直接在括號內填入具體的值來顯示自己想看的行數。

3.3 查看行列數
使用shape查看行列數,參數0爲查看行數,參數1爲查看列數。

df3.shape[0]
df3.shape[1]

3.4 查看行名與列名
使用index爲查看行名,columns爲查看列名。

df.index
df.columns

3.5 查看數據值
使用values可以查看DataFrame裏的數據值,返回的是一個數組。

df.values

按行:
可使用loc或iloc,loc是根據行名,iloc是根據行的索引。如果查看多行要多嵌套一箇中括號。

# 單行
df.loc['xxx']
df.iloc[0]
# 多行
df.loc[['aa','bb']]
df.iloc[[0,1]]

按列:
直接使用列名即可。同樣如果要取多列,注意需要兩個中括號。

# 某一列
df['xxx']
# aaa列和bbb列
df[['aaa', 'bbb']]

3.6 按條件查找
例如:查找年齡爲18且成績大於90的學生學號和姓名。

df[(df['age'] == 18) & (df['score']>90)][['no','name']]
4. pd.merge函數

利用merge函數可以查找兩個表中相同元素,效率非常高。

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
         left_index=False, right_index=False, sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False,
         validate=None)

參數:

left: 拼接的左側DataFrame對象
right: 拼接的右側DataFrame對象
on: 要加入的列或索引級別名稱。 必須在左側和右側DataFrame對象中找到。 如果未傳遞且left_index和right_index爲False,則DataFrame中的列的交集將被推斷爲連接鍵。
left_on:左側DataFrame中的列或索引級別用作鍵。 可以是列名,索引級名稱,也可以是長度等於DataFrame長度的數組。
right_on: 左側DataFrame中的列或索引級別用作鍵。 可以是列名,索引級名稱,也可以是長度等於DataFrame長度的數組。
left_index: 如果爲True,則使用左側DataFrame中的索引(行標籤)作爲其連接鍵。 對於具有MultiIndex(分層)的DataFrame,級別數必須與右側DataFrame中的連接鍵數相匹配。
right_index: 與left_index功能相似。
how: One of ‘left’, ‘right’, ‘outer’, ‘inner’. 默認inner。inner是取交集,outer取並集。比如left:[‘A’,‘B’,‘C’];right[’'A,‘C’,‘D’];inner取交集的話,left中出現的A會和right中出現的買一個A進行匹配拼接,如果沒有是B,在right中沒有匹配到,則會丟失。'outer’取並集,出現的A會進行一一匹配,沒有同時出現的會將缺失的部分添加缺失值。
sort: 按字典順序通過連接鍵對結果DataFrame進行排序。 默認爲True,設置爲False將在很多情況下顯着提高性能。
suffixes: 用於重疊列的字符串後綴元組。 默認爲(‘x’,’ y’)。
copy: 始終從傳遞的DataFrame對象複製數據(默認爲True),即使不需要重建索引也是如此。
indicator:將一列添加到名爲_merge的輸出DataFrame,其中包含有關每行源的信息。 _merge是分類類型,並且對於其合併鍵僅出現在“左”DataFrame中的觀察值,取得值爲left_only,對於其合併鍵僅出現在“右”DataFrame中的觀察值爲right_only,並且如果在兩者中都找到觀察點的合併鍵,則爲left_only。
5. Pandas之drop_duplicates:去除重複項
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

參數:

  • subset : column label or sequence of labels, optional
    用來指定特定的列,默認所有列
  • keep : {‘first’, ‘last’, False}, default ‘first’
    刪除重複項並保留第一次出現的項
  • inplace : boolean, default False
    是直接在原來數據上修改還是保留一個副本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章