資料集拆分是將一個大型的資料集拆分為多個較小的資料集,可以讓資料更加清晰易懂,也方便對單個資料集進行分析和處理,
同時,分開的資料集也可以分別應用不同的資料分析方法進行處理,更加高效和專業,
資料集合并則是將多個資料集合并成一個大的資料集,可以提供更全面的資訊,也可以進行更綜合的資料分析,
同時,資料集合并也可以減少資料處理的復雜度和時效性,提升資料分析的準確性和結果的可靠性,
1. 資料集拆分
拆分資料集比較簡單,之前介紹過資料檢索的各種方式,其實檢索出的結果就是拆分出來的資料,
1.1 拆分行
拆分單行和多行,
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
first_row = df.loc[0:0, :]
left_rows = df.loc[1:, :]

1.2 拆分列
拆分單列或者多列,
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
first_col = df[["name"]]
left_cols = df[["age", "gender"]]

1.3 按條件拆分
下面的示例按照列的值來拆分資料集,
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
males = df[df["gender"] == "男"]
greater13 = df[df["age"] > 13]

如果有多個條件,可以通過邏輯與(&)和邏輯或(|)符號來連接,具體可以參照之前介紹資料檢索的文章,
2. 資料集合并
資料集的合并也是比較常用的,因為我們收集來的資料可能來自不同的地方,
2.1 merge 方法
merge方法合并DataFrame時,有兩個重要的引數:
- how:設定合并的方式,有
inner,outer,left,right四種方式, - on:依據那個列來合并
下面是四種不同合并方式的示例,
inner合并:name值相同的資料才保留下來,
import pandas as pd
df1 = pd.DataFrame(
{
"name": ["小紅", "小明"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
df2 = pd.DataFrame(
{
"name": ["小紅", "小華"],
"score": [99, 100],
}
)
df = pd.merge(df1, df2, how="inner", on="name")
df

outer合并:兩個DataFrame的name都保留下來,合并后缺失值的填充NaN,
df = pd.merge(df1, df2, how="outer", on="name")
df

left合并:df1的name全部保留下來,缺失的值填充NaN,
df = pd.merge(df1, df2, how="left", on="name")
df

right合并:df2的name全部保留下來,缺失的值填充NaN,
df = pd.merge(df1, df2, how="right", on="name")
df

2.2 concat 方法
兩個DataFrame結構相同時,一般是按行來合并(axis=0),
df1 = pd.DataFrame(
{
"name": ["小紅", "小明"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
df2 = pd.DataFrame(
{
"name": ["小紅", "小華"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
df = pd.concat([df1, df3], axis=0)
df

如果兩個DataFrame結構不一樣時,用列合并(axis=1),
df1 = pd.DataFrame(
{
"name": ["小紅", "小明"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
df2 = pd.DataFrame(
{
"score": [100, 90],
"city": ["nanjing", "beijing"],
}
)
df = pd.concat([df1, df3], axis=1)
df

2.3 join 方法
join方法和merge方法類似,主要區別在于join是DataFrame的方法,而merge是pandas的方法,
下面請直接看與merge方法相似的四種示例,
inner合并:name值相同的資料才保留下來,
df1 = pd.DataFrame(
{
"name": ["小紅", "小明"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
df2 = pd.DataFrame(
{
"name": ["小紅", "小華"],
"score": [99, 100],
}
)
df1 = df1.set_index("name")
df2 = df2.set_index("name")
df = df1.join(df2, how="inner")
df.reset_index()

注意,這里顯示了join和merge的一個區別,join默認是依據索引(index)來合并DataFrame的,
所以,先把name設定為索引之后才合并的,合并之后又通過reset_index重置了索引,得到了和merge同樣的結果,
outer合并:兩個DataFrame的name都保留下來,合并后缺失值的填充NaN,
df1 = df1.set_index("name")
df2 = df2.set_index("name")
df = df1.join(df2, how="outer")
df.reset_index()

注意,最后的資料雖然和merge一樣,但是順序有些區別,
left合并:df1的name全部保留下來,缺失的值填充NaN,
df1 = df1.set_index("name")
df2 = df2.set_index("name")
df = df1.join(df2, how="left")
df.reset_index()

left的結果和merge一樣,
right合并:df2的name全部保留下來,缺失的值填充NaN,
df1 = df1.set_index("name")
df2 = df2.set_index("name")
df = df1.join(df2, how="right")
df.reset_index()

right的結果和merge一樣,
3. 總結回顧
總的來說,pandas資料集拆分和合并的意義在于高效利用資料,提高資料分析的質量和效率,進一步實作資料驅動的業務增長,
本篇主要介紹了資料集拆分和合并最常用的幾種基本方法,根據具體的業務組合這些基本方法,就能夠進行更復雜的資料集拆分和合并,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552811.html
標籤:其他
上一篇:實驗三 Java類的繼承與派生
下一篇:返回列表
