文章目錄
- 前言
- 一、遍歷
- 1.行遍歷
- 2.列遍歷
- 3.直接遍歷
- 二、排序
- 三、去重
- 四、分組
前言
通過今天的學習,我掌握了對Pandas的數據類型進行基本操作,包括遍歷,去重,排序,分組
一、遍歷
1.行遍歷
- intertuples方法用于遍歷Dataframe的行,返回包含行數據及命名的元組
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])# 使用 itertuples() 遍歷行
for row in df.itertuples(index=False): #如果index為False,則結果過濾行索引信息print(row)for i in row:print(i)
tips:可以指定index參數,用于控制是否返回行索引信息
2.列遍歷
- items方法用于遍歷Dataframe的列,返回包括列名和列數據的迭代器
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])# 使用 items() 遍歷列
for column_name, column_data in df.items():print(f"Column Name: {column_name}, Column Data: {column_data}")
3.直接遍歷
- 使用index,columns屬性進行遍歷
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])for idx in df.index:for col in df.columns:print(df.loc[idx,col])
二、排序
- sort_values方法用于對Dataframe進行排序
- DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=‘quicksort’, na_position=‘last’)
- by:列的標簽或列的標簽列表。指定要排序的列
- ascending:布爾值或布爾值列表,指定是升序排序(True)還是降序排序(False)。可以為每個列指定不同的排序方向。
data = {'A': [3, 2, 1],'B': [6, 5, 4],'C': [9, 8, 7]
}
df = pd.DataFrame(data, index=['b', 'c', 'a'])df_sorted = df.sort_values(by='A',ascending=False)
print(df_sorted)df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 30, 25, 35, 30],'Score': [85, 90, 80, 95, 88]
})
# 如果列中存在相同的值,可以指定兩個列進行排序
df_sorted = df.sort_values(by=['Age', 'Score'], ascending=[False, True])
print(df_sorted)
三、去重
- drop_duplicates方法用于刪除重復行或元素
- drop_duplicates(by=None, subset=None, keep=‘first’, inplace=False)
- keep:指定如何處理重復項
- by:用于標識重復項的列名或列名列表
data = {'A': [1, 2, 2, 3],'B': [4, 5, 5, 6],'C': [7, 8, 8, 9]
}
df = pd.DataFrame(data)# 刪除所有列的重復行,默認保留第一個出現的重復項
df_unique = df.drop_duplicates()
print(df_unique)# 刪除重復行,保留最后一個出現的重復項
df_unique = df.drop_duplicates(keep='last')
print(df_unique)# 刪除所有重復項
df_unique = df.drop_duplicates(keep=False)
print(df_unique)
四、分組
- groupby方法用于對數據進行分組
- DataFrame.groupby(by, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)
- by:指定分組的列名
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C': [1, 2, 3, 4, 5, 6, 7, 8],'D': [10, 20, 30, 40, 50, 60, 70, 80]}
df = pd.DataFrame(data)# 按列'A'分組,返回一個對象
grouped = df.groupby('A')# 查看分組結果
for name, group in grouped:print(f"Group: {name}")print(group)print()mean = df.select_dtypes(include='number').groupby(df['A']).mean()
print(mean)
mean = df.groupby("A")["D"].mean() #如果不指定列,會計算所有列的均值
print(mean)# transform用于在分組操作中對每個組內的數據進行轉換,并將結果合并回原始 DataFrame
mean = df.groupby("A")["D"].transform(lambda x: x.mean())
# print(mean)
df['C_mean'] = mean
print(df)
THE END