動手學習資料分析 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,即使用預設索引