?前言:在數據分析領域,Python 的 Pandas 庫堪稱得力助手。它不僅擁有高效的數據處理能力,還能與 NumPy 完美配合——后者強大的數值計算功能為 Pandas 提供了堅實的技術基礎。
目錄
Pandas數據分析實戰:解鎖數據處理的高效之道
數據創建與查看:第一步總是最難的?
數據選擇與修改:精準操作的奧秘
數據篩選:大海撈針的必備技能
數據排序與聚合:深度分析的利器
數據合并與缺失值處理: perfection 的關鍵步驟
Pandas與NumPy的神仙組合
總結
Pandas數據分析實戰:解鎖數據處理的高效之道
最近在學習數據分析的過程中,我發現 Pandas 這個工具真的是太實用了!今天就想跟大家分享一下我在學習 Pandas 過程中總結的一些基礎操作和實戰經驗。
數據創建與查看:第一步總是最難的?
剛開始接觸數據分析時,創建和查看數據這一步就讓我琢磨了很久。后來發現 Pandas 的 DataFrame 簡直就是為了解決這個問題而生的。你可以用字典輕松創建一個數據表,像這樣:
import numpy as np
import pandas as pddata = {'名字': ['張三', '李四', '王五', '趙六'],'年齡': [25, 30, 35, 40],'城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)
print("原始數據:")
print(df)
是不是很方便?不過別急,這還只是開始。查看數據的時候,我發現 head()
和 tail()
簡直是拯救了我這個數據量大的時候容易犯迷糊的人。再配上 info()
,數據的底細能摸得一清二楚。
數據選擇與修改:精準操作的奧秘
在數據選擇上,我發現 Pandas 的方式特別靈活。按列選擇直接用列名就行,簡單粗暴。按行選擇呢,iloc
和 loc
各有千秋,iloc
按位置索引,loc
按標簽索引,用起來得心應手。
print("\n選擇索引為1的行:")
print(df.iloc[1])print("\n選擇索引為2的行:")
print(df.loc[2])
至于修改數據,剛開始我還擔心會很復雜。結果發現批量修改一列簡單得很,直接重新賦值就行了。要是只改某個位置的數據,用 at
方法也很方便。
print("\n修改'年齡'列的值:")
df['年齡'] = [26, 31, 36, 41]
print(df)print("\n修改索引為1的行,年齡為32:")
df.at[1, '年齡'] = 32
print(df)
這些操作讓我感覺對數據的掌控力滿滿。
數據篩選:大海撈針的必備技能
數據篩選這一步,我感覺就像是在大海里撈針。不過 Pandas 讓這個過程變得簡單了。篩選符合條件的數據,直接用條件表達式就能搞定。
print("\n篩選年齡大于30的人:")
print(df[df['年齡'] > 30])print("\n篩選城市為'北京'或'上海'的人:")
print(df[(df['城市'] == '北京') | (df['城市'] == '上海')])
通過這些篩選,我能快速把想要的數據挑出來,效率提升不少。
數據排序與聚合:深度分析的利器
數據分析嘛,肯定少不了排序和聚合。排序的話,sort_values()
讓數據能按照指定列從小到大或者降序排列,特別直觀。
print("\n按年齡從小到大排序:")
print(df.sort_values(by='年齡'))print("\n按年齡降序排序:")
print(df.sort_values(by='年齡', ascending=False))
聚合操作更是一絕。用 groupby
按城市統計平均年齡,一眼就能看出不同城市的年齡分布情況。
data_group = {'城市': ['北京', '北京', '上海', '上海', '廣州', '廣州'],'年齡': [25, 30, 28, 35, 32, 40]}
df_group = pd.DataFrame(data_group)print("\n按城市統計平均年齡:")
print(df_group.groupby('城市')['年齡'].mean())
這些操作讓我對數據的理解更深入了。
數據合并與缺失值處理: perfection 的關鍵步驟
在實際項目里,數據來源往往很雜亂。數據合并和缺失值處理就成了關鍵。合并數據時,merge
方法能幫我們把不同來源的數據整合到一起。
df1 = pd.DataFrame({'名字': ['張三', '李四'],'年齡': [25, 30]})
df2 = pd.DataFrame({'名字': ['李四', '王五'],'工作': ['醫生', '教師']})print("\n按'名字'列合并兩個DataFrame:")
print(pd.merge(df1, df2, on='名字', how='inner'))print("\n外連接(包含所有名字):")
print(pd.merge(df1, df2, on='名字', how='outer'))
至于缺失值,填充或者刪除都行,看具體需求。
data_with_nan = {'名字': ['張三', '李四', np.nan, '趙六'],'年齡': [25, np.nan, 35, 40],'城市': ['北京', '上海', '廣州', np.nan]}
df_with_nan = pd.DataFrame(data_with_nan)print("\n用'未知'填充名字的缺失值:")
print(df_with_nan['名字'].fillna('未知'))print("\n用平均值填充年齡的缺失值:")
mean_age = df_with_nan['年齡'].mean()
print(df_with_nan['年齡'].fillna(mean_age))print("\n刪除有缺失值的行:")
print(df_with_nan.dropna())
這些步驟讓數據更完整、更可用。
Pandas與NumPy的神仙組合
提到數據處理,就不得不提 Pandas 和 NumPy 的神仙組合。NumPy 的數值計算能力,為 Pandas 提供了強大的支持。比如用 NumPy 生成隨機數據,再用 Pandas 分析,這種操作在實際項目里很常見。
data = np.random.randn(5, 3)
df_random = pd.DataFrame(data, columns=['A', 'B', 'C'])
print("\n隨機生成的數據:")
print(df_random)print("\n每列的平均值:")
print(df_random.mean())
總結
Pandas 作為數據分析的強大工具,為我們提供了豐富的功能和便捷的操作方式。無論是數據創建、查看、選擇、修改,還是數據篩選、聚合、合并,都能輕松應對。結合 NumPy 的數值計算能力,Pandas 讓我們在數據分析的道路上更加得心應手。希望這篇博客能為你打開數據分析的大門,幫助你在數據的海洋中探索出更多寶藏。