pandas是Python語言下重要的數據分析庫,它提供了Series、DataFrame等數據結構,以及強大的數據處理、分析、清理、加工等功能。本文將以pandas官方文檔為中心,從多個方面對pandas文檔做詳細的闡述,以幫助各位全能編程工程師更好地學習和使用pandas。
一、Series和DataFrame
pandas的兩個主要數據結構是Series和DataFrame。Series是單個列,類似於一維數組。DataFrame是多列的表格,類似於二維數組。在pandas中,一個DataFrame可以看作是若干個Series以相同的index聯繫在一起。具體來說,每個DataFrame都有行索引和列索引兩個方向的索引,行索引是默認的數字型,而列索引通常是由列名組成的字符串類型。以下是Series和DataFrame的創建、訪問、切片等基本操作的示例代碼:
import pandas as pd import numpy as np # 創建Series ser = pd.Series([1, 3, 5, np.nan, 6, 8]) print(ser) # 創建DataFrame dates = pd.date_range('20220101', periods=6) df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD')) print(df) # 訪問Series元素 print(ser[0]) print(ser[:3]) print(ser[ser > ser.median()]) # 訪問DataFrame元素 print(df.head()) print(df.tail(3)) print(df.index) print(df.columns) print(df.values)
二、數據清洗和處理
數據在實際應用中往往存在各種不規則和不完整的情況,而pandas提供了一系列方便的函數和方法來處理這些數據問題。以下是一些常見的數據清洗和處理操作的示例代碼:
1. 數據過濾與填充
# 數據過濾 df[df.A > 0] # 數據填充 df.fillna(value=5) # 刪除帶有NA值的行 df.dropna(how='any')
2. 數據排序與重組
# 數據排序(by=按照某一列排序) df.sort_values(by='B') # 數據轉置 df.T # 按照行列索引重組數據 df.groupby(by=['A', 'B']).sum()
3. 數據合併與拼接
# 數據合併(按照某一列拼接) df1 = pd.DataFrame({'key': ['foo', 'bar', 'baz', 'foo'], 'value': [1, 2, 3, 4]}) df2 = pd.DataFrame({'key': ['foo', 'bar'], 'value': [5, 6]}) pd.merge(df1, df2, on='key', how='left') # 數據拼接 pieces = [df[:2], df[-2:]] pd.concat(pieces)
三、數據可視化
數據可視化是數據分析中重要且不可缺少的一環,它能夠幫助我們更好地理解和展現數據規律,而pandas提供了一些簡單易用的繪圖函數和方法,能夠幫助我們快速地生成各種圖表。以下是一些常見數據可視化操作的示例代碼:
1. 折線圖
import matplotlib.pyplot as plt # 折線圖 ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) ts = ts.cumsum() ts.plot() plt.show()
2. 直方圖
# 直方圖 df = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000), 'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c']) df.plot.hist(alpha=0.5) plt.show()
3. 散點圖
# 散點圖 df = pd.DataFrame(np.random.randn(1000, 2), columns=['a', 'b']) df['b'] = df['b'] + np.arange(1000) df.plot.scatter(x='a', y='b') plt.show()
四、多重索引和層次化索引
在pandas中可以使用多重索引(也稱為層次化索引)來表示更複雜的數據。多重索引是指在一個軸上具有多個索引級別,能夠將數據更加靈活地組織和表示。以下是一些多重索引和層次化索引相關的操作的示例代碼:
1. 創建多重索引
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']] tuples = list(zip(*arrays)) multi_index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) s = pd.Series(np.random.randn(8), index=multi_index) s
2. 多級索引操作
# 選擇第一層 df.loc['bar'] # 選擇第二層 df.loc[(slice(None), 'two'), :]
3. 多層級別轉置
# 更改層次化索引的順序 swapped = df.swaplevel('foo', 'bar') swapped # 轉置數據 swapped.T.stack()
五、時間序列和日期功能
pandas提供了處理時間序列和日期相關的功能,這些功能主要是由Timestamp和DatetimeIndex類提供的。以下是一些時間序列和日期功能的示例代碼:
1. DatetimeIndex
# 創建帶有日期的時間序列 rng = pd.date_range('1/1/2012', periods=100, freq='S') ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng) ts.resample('5Min').sum()
2. Timestamp
# Timestamp創建 ts = pd.Timestamp('2022-02-22 12:00:00') ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second
3. 時間戳轉換
# 時間戳轉換 pd.to_datetime(pd.Series(['Jul 31, 2022', '2012-02-01', None]))
六、總結
本文從Series和DataFrame、數據清洗和處理、數據可視化、多重索引和層次化索引以及時間序列和日期等多個方面對pandas文檔做了詳細的闡述,並提供了相應的示例代碼。pandas是Python語言下不可或缺的數據分析庫,熟練掌握pandas的相關知識和技能對於成為一名全能編程工程師而言是必不可少的。希望本文對各位讀者有所幫助,能夠更好地學習和使用pandas。
原創文章,作者:IYAE,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134257.html