動手學習資料分析 Task03

人间烟火天上星發表於2024-03-17

動手學習資料分析 Task03

本文是Datawhale的組隊學習動手學習資料分析的學習筆記,課件內容來源於Datawhale的團隊;程式碼部分參考了b站up主橘子冰的一隅角落的系列影片

第二章 第二節:資料重構

2.4 資料的合併

2.4.1 任務一:將data資料夾裡面的所有資料都載入,與之前的原始資料相比,觀察他們的之間的關係

使用read_csv()函式讀取資料。

2.4.2:任務二:使用concat方法:將資料train-left-up.csv和train-right-up.csv橫向合併為一張表,並儲存這張表為result_up

concat()函式可以沿著指定的軸將多個dataframe或者series拼接到一起

pd.concat(
     objs,      
     axis=0,     
     join='outer',
     ignore_index=False,
     keys=None,      
     levels=None,     
     names=None,      
     verify_integrity=False,     
     copy=True)
  • objs:Series,DataFrame或Panel物件的序列或對映,如果傳遞了dict,則排序的鍵將用作鍵引數
  • axis:預設是0代表按行合併,如果等於1代表按列合併
  • join:合併的時候索引的對齊方式,預設是outer join,也可以是inner join
  • ignore_index:是否忽略掉原來的資料索引,預設為False
  • keys:鍵序列,預設無。如果透過了多個級別,則應包含 元組 。使用傳遞的鍵作為最外層構建層次索引
  • levels:序列列表,預設值無。用於構建MultiIndex的特定級別(唯一值)。否則,它們將從鍵推斷
  • names:預設無。生成的分層索引中的級別名稱。
  • verify_integrity:預設為 False。檢查新的連線軸是否包含重複項。相對於實際的資料連線,這可能非常昂貴
  • sort:預設為 False。如果連線為“外部”時尚未對齊,則對非連線軸進行排序。這在 join=‘inner’ 時無效,它已經保留了非串聯軸的順序。在 1.0.0 版更改: 預設情況下更改為不排序
  • copy:預設為True,如果為False,則請勿不必要德複製資料

2.4.3 任務三:使用concat方法:將train-left-down和train-right-down橫向合併為一張表,並儲存這張表為result_down。然後將上邊的result_up和result_down縱向合併為result。

使用concat函式,同任務二

2.4.4 任務四:使用DataFrame自帶的方法join方法和append:完成任務二和任務三的任務

join(self,other,on,how , lsuffix,rsuffix,sort,validate)
on:合併other表的列索引或列名可以是列表

how:可選’left’, ‘right’, ‘outer’, ‘inner’, ‘cross’,預設為left

lsuffix:列名重複時,合併後左表列名使用的字尾,預設’ ‘

rsuffix:列名重複時,合併後右表列名使用的字尾,預設’ '

sort:True時根據合併的索引排列合併結果,False時根據how引數排序,預設False

validate:設定合併資料型別,支援"one_to_one" or “1:1”、“one_to_many” or “1:m”、“many_to_one” or “m:1”、“many_to_many” or “m:m”

append(other,ignore_index,verify_integrity,sort)

other:要追加的DataFrame、Series或類似字典的物件

ignore_index:是否忽略索引,在結果中重新標記行的索引,預設為False

verify_integrity:如果為True,在建立具有重複索引的情況下會引發ValueError異常,預設為False

sort:如果為True,則在列不對齊時對列進行排序,預設為False

2.4.5 任務五:.用Panads的merge方法和DataFrame的append方法:完成任務二和任務三的任務

merge(left, right, how, on, left_on, right_on,left_index, right_index, sort, suffixes, copy, indicator)

left,right:指左右兩個DataFrame物件

how:指左右兩個物件存在不重合的鍵時,取結果的方式.預設情況下how='inner'。how='inner'取的是交集,how='outer'取的是並集,還有how='left',how='right',同時how='inter'稱為內連線,outer稱為外連線,left稱為左連線,right稱為右連線

on, left_on, right_on:預設情況下on=None,用來顯示指定列名(鍵名),如果兩個物件中的列名(鍵名)不相同時,可以分別使用left_on和right_on來分別指定兩個物件的鍵名

left_index, right_index:如果想直接使用行索引作為連線鍵名的話,可以將left_index和right_index由原來的False設定為True

sort:預設情況下sort為True

suffixes:指定當左右DataFrame存在相同列名時在列名後面附加的字尾名稱

copy:預設為True,總是將資料複製到資料結構中

2.4.6 任務六:完成的資料儲存為result.csv

result.to_csv('result.csv')

2.5 換一種角度看資料

2.5.1 任務一:將我們的資料變為Series型別的資料

stack函式的主要作用是將原來的列轉成最內層的行索引

2.6 資料運用

2.6.1 任務一:透過《Python for Data Analysis》P303、Google or Baidu來學習瞭解GroupBy機制

df.groupby(
    by=None,
    axis=0,
    level=None,
    as_index: 'bool' = True,
    sort: 'bool' = True,
    group_keys: 'bool' = True,
    squeeze: 'bool' = <object object at 0x137ac9240>,
    observed: 'bool' = False,
    dropna: 'bool' = True,
)

by:指定要分組的欄位,即根據哪個欄位進行分組,可以是一個,也可以是多個

axis:指定對列或者行分組,預設為0,即對列分組。當axis = 1時,表示對行分組

as_index:預設為True,即將分組列名作為輸出的索引,也可以為False,即使用預設索引

相關文章