全能編程工程師必修技能——pandas文檔詳解

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IYAE的頭像IYAE
上一篇 2024-10-04 00:04
下一篇 2024-10-04 00:04

相關推薦

發表回復

登錄後才能評論