一、 Pandas 面試題
Pandas 是一個用於數據操作和分析的 Python 庫。在數據處理和數據分析領域中,它是非常流行的工具之一,被廣泛用於處理結構化數據。
在 Pandas 面試中,經常涉及以下幾個方面的問題:
1. Series 和 Dataframe 有什麼區別?
Pandas 中的 Series 可以看作是一個帶有標籤的一維數組,可以保存不同的數據類型,每個元素都有一個唯一的標籤。而 Dataframe 是二維數組,可以看成是多個 Series 拼接組成的表格,有行索引和列索引,可以亞索每一行和每一列。
# 簡單創建 Series 和 Dataframe
import pandas as pd
# 創建 Series
s = pd.Series([1,2,3,4])
print(s)
# 創建 Dataframe
df = pd.DataFrame({'a': [1,2,3,4], 'b': [5,6,7,8]})
print(df)
2. 如何刪除 Dataframe 中重複的行?
如果 Pandas 中的 Dataframe 包含重複的行,可以使用 drop_duplicates 方法刪除,方法會返回一個新的 Dataframe。在調用時,可以指定列名,只有指定的列全都相同的行才會被刪除。
# 刪除 Dataframe 中的重複行
import pandas as pd
df = pd.DataFrame({'A': [1,1,2,2,3,4], 'B': ['a', 'b', 'a', 'a', 'c', 'd']})
df = df.drop_duplicates(['A'])
print(df)
3. 如何對 Dataframe 進行合併操作?
在 Pandas 中,可以使用 concat 方法或 merge 方法對 Dataframe 進行合併操作。其中,concat 方法主要用於簡單的合併操作。如果需要更加複雜的合併操作,則可以選擇 merge 方法。
# 使用 concat 合併 Dataframe
import pandas as pd
df1 = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})
df2 = pd.DataFrame({'A': [4,5,6], 'B': [7,8,9]})
df3 = pd.concat([df1, df2])
print(df3)
# 使用 merge 合併 Dataframe
df4 = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6], 'key': ['a', 'b', 'c']})
df5 = pd.DataFrame({'B': [7,8,9], 'C': [10,11,12], 'key': ['a', 'b', 'd']})
df6 = pd.merge(df4, df5, on='key')
print(df6)
二、 Pandas常見面試題
1. 如何刪除一列或多列?
可以使用 drop 函數刪除一列,需要指定列的名稱以及 axis=1 參數。如果需要刪除多列,則可以將列名放在一個 list 中傳遞給 drop 函數。
# 刪除一列或多列
import pandas as pd
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6], 'C': [7,8,9]})
df = df.drop(['B', 'C'], axis=1)
print(df)
2. 如何選擇 Dataframe 中的某些列?
可以使用 loc 或 iloc 函數選擇某些列。如果只需要選擇一列,則可以使用如下代碼:
# 選擇 Dataframe 中的某些列
import pandas as pd
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6], 'C': [7,8,9]})
col = df['A']
print(col)
如果需要選擇多列,則可以使用 loc 或 iloc 函數。其中,loc 函數是基於名稱進行選擇,iloc 函數是基於索引進行選擇。
# 使用 loc 函數選擇多列
cols = df.loc[:, ['A', 'C']]
print(cols)
# 使用 iloc 函數選擇多列
cols = df.iloc[:, [0, 2]]
print(cols)
3. 如何設置 Dataframe 中某些列的數值類型?
可以使用 astype 函數設置某些列的數值類型,函數會返回新的 Dataframe。可以將每個需要轉換類型的列都單獨轉換,也可以使用一個字典將需要轉換類型的列名稱和對應的數值類型一起傳遞給 astype 函數。
# 設置 Dataframe 中某些列的數值類型
import pandas as pd
df = pd.DataFrame({'A': ['1', '2', '3'], 'B': ['4.1', '5.2', '6.3']})
df['A'] = df['A'].astype(int)
df['B'] = df['B'].astype(float)
print(df)
# 傳遞字典轉換某些列的數值類型
dtypes = {'A': int, 'B': float}
df = df.astype(dtypes)
print(df)
三、 Pandas多層標題選取
1. 如何選取多層標題中的某個子標題?
可以使用 loc 函數選取多層標題中的某個子標題,需要指定每個層級的名稱,可以使用 tuple 或列表進行指定,例如:
# 選擇多層標題中的子標題
import pandas as pd
data = {('a', 'b'): [1,2,3], ('a', 'c'): [4,5,6]}
df = pd.DataFrame(data)
sub_df = df.loc[:, ('a', 'b')]
print(sub_df)
2. 如何選取多層標題中的所有子標題?
可以使用 xs 函數選取多層標題中的所有子標題,需要指定每個層級的名稱。如果有多個層級,可以使用 level 參數指定。
# 選擇多層標題中的所有子標題
import pandas as pd
data = {('a', 'b'): [1,2,3], ('a', 'c'): [4,5,6]}
df = pd.DataFrame(data)
sub_df = df.xs('b', level=1, axis=1)
print(sub_df)
3. 如何選取包含某個標題的所有子標題?
可以使用 filter 函數選取包含某個標題的所有子標題,需要指定要篩選的標題的名稱。例如:
# 選擇包含某個標題的所有子標題
import pandas as pd
data = {('a', 'b'): [1,2,3], ('a', 'c'): [4,5,6], ('b', 'd'): [7,8,9]}
df = pd.DataFrame(data)
sub_df = df.filter(like='a', axis=1)
print(sub_df)
四、 總結
在面試中,Pandas 常常是重要的考點。本篇文章介紹了Pandas的常見面試題,包括 Series 和 Dataframe 的區別、刪除重複行、合併 Dataframe、刪除列、選擇列、數據類型的設置、多層標題選取等。希望對大家在 Pandas 面試中有所幫助。
原創文章,作者:SVSB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148706.html