溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas數據結構的介紹及如何創建Series,DataFrame對象

發布時間:2021-10-08 09:12:13 來源:億速云 閱讀:268 作者:柒染 欄目:開發技術
# Pandas數據結構的介紹及如何創建Series,DataFrame對象

## 一、Pandas簡介

### 1.1 Pandas概述
Pandas是Python中最流行的數據分析庫之一,由Wes McKinney于2008年開發。名稱"Pandas"源自"Panel Data"(面板數據)的縮寫。作為NumPy的擴展庫,Pandas專門為解決數據分析任務而設計,尤其擅長處理以下類型的數據:

- 表格數據(如SQL表格、Excel表格)
- 時間序列數據
- 異構數據(不同類型的數據列)
- 帶標簽的數據(行列都有標識)

### 1.2 Pandas的核心優勢
1. **高效處理**:基于NumPy實現,運算性能優異
2. **靈活索引**:支持復雜的行列索引操作
3. **缺失值處理**:內置完善的缺失值處理方法
4. **數據對齊**:自動按標簽對齊不同數據源
5. **豐富IO**:支持CSV、Excel、SQL、JSON等多種數據格式

### 1.3 安裝與導入
```python
# 安裝命令
pip install pandas

# 標準導入方式
import pandas as pd

二、Pandas核心數據結構

2.1 Series(序列)

2.1.1 Series基本概念

Series是Pandas中最基本的一維數據結構,可以看作帶標簽的數組。其特點包括:

  • 類似一維數組,但包含索引(index)
  • 可以存儲任何數據類型(整數、字符串、浮點數、Python對象等)
  • 索引可以是數字、字符串或時間戳

2.1.2 Series內存結構

+--------+-----------+
|  Index |  Values   |
+--------+-----------+
|   0    |   'A'     |
|   1    |   'B'     |
|   2    |   'C'     |
+--------+-----------+

2.2 DataFrame(數據框)

2.2.1 DataFrame基本概念

DataFrame是Pandas中最常用的二維表格型數據結構,特點包括:

  • 可以看作Series的容器(多個Series共享同一個索引)
  • 每列可以是不同的數據類型
  • 既有行索引(index)也有列索引(columns)
  • 支持行列的增刪改查

2.2.2 DataFrame內存結構

+--------+-----------+-----------+-----------+
|  Index |  Column A | Column B  | Column C  |
+--------+-----------+-----------+-----------+
|   0    |     1     |    'X'    |    True   |
|   1    |     2     |    'Y'    |   False   |
+--------+-----------+-----------+-----------+

2.3 Index(索引)

2.3.1 索引的作用

  • 快速數據訪問的”鍵”
  • 自動數據對齊的基礎
  • 支持高級索引和切片操作

2.3.2 常見索引類型

  • RangeIndex:默認的數字范圍索引
  • DateTimeIndex:時間序列專用索引
  • MultiIndex:多層索引(層次化索引)

三、創建Series對象

3.1 基本創建方法

3.1.1 從列表創建

import pandas as pd

# 基本創建(自動生成數字索引)
s1 = pd.Series([1, 3, 5, 7])
print(s1)

3.1.2 指定索引

# 自定義索引
s2 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s2)

3.1.3 從字典創建(自動匹配索引)

data = {'北京': 2154, '上海': 2428, '廣州': 1867}
s3 = pd.Series(data)
print(s3)

3.2 特殊類型Series

3.2.1 創建時間序列

dates = pd.date_range('20230101', periods=4)
s4 = pd.Series([1.2, 3.4, 5.6, 7.8], index=dates)

3.2.2 創建帶缺失值的Series

s5 = pd.Series([1, None, 3, np.nan])

3.3 Series常用屬性

s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])

print(s.values)    # 值數組 [10 20 30]
print(s.index)     # 索引對象 Index(['a', 'b', 'c'])
print(s.dtype)     # 數據類型 int64
print(s.shape)     # 形狀 (3,)
print(s.size)      # 元素數量 3
print(s.name)      # 名稱 None

四、創建DataFrame對象

4.1 基本創建方法

4.1.1 從字典創建(最常用)

data = {
    '城市': ['北京', '上海', '廣州'],
    '人口(萬)': [2154, 2428, 1867],
    'GDP(億)': [40269, 43214, 28232]
}

df1 = pd.DataFrame(data)
print(df1)

4.1.2 指定行列索引

df2 = pd.DataFrame(
    data,
    index=['a', 'b', 'c'],          # 行索引
    columns=['城市', 'GDP(億)']      # 選擇/排序列
)

4.2 其他創建方式

4.2.1 從二維數組創建

arr = np.random.rand(3, 4)
df3 = pd.DataFrame(arr, columns=list('ABCD'))

4.2.2 從列表創建

data = [
    ['北京', 2154, 40269],
    ['上海', 2428, 43214]
]
df4 = pd.DataFrame(data, columns=['城市', '人口', 'GDP'])

4.2.3 從Series字典創建

s1 = pd.Series([2154, 2428, 1867])
s2 = pd.Series([40269, 43214, 28232])
df5 = pd.DataFrame({'人口': s1, 'GDP': s2})

4.3 特殊類型DataFrame

4.3.1 創建帶時間索引的DataFrame

dates = pd.date_range('20230101', periods=6)
df6 = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))

4.3.2 創建多層索引DataFrame

arrays = [
    ['A', 'A', 'B', 'B'],
    [1, 2, 1, 2]
]
index = pd.MultiIndex.from_arrays(arrays, names=('字母', '數字'))
df7 = pd.DataFrame(np.random.randn(4, 3), index=index, columns=['X', 'Y', 'Z'])

4.4 DataFrame常用屬性

df = pd.DataFrame({'A': [1,2], 'B': [3,4]})

print(df.shape)      # 形狀 (2,2)
print(df.index)      # 行索引 RangeIndex(start=0, stop=2, step=1)
print(df.columns)    # 列索引 Index(['A', 'B'])
print(df.dtypes)     # 每列數據類型
print(df.values)     # 二維ndarray
print(df.T)          # 轉置

五、數據結構操作基礎

5.1 索引與選擇

5.1.1 Series索引

s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])

# 標簽索引
print(s['a'])        # 10

# 位置索引
print(s.iloc[0])     # 10

# 布爾索引
print(s[s > 15])     # b 20, c 30

5.1.2 DataFrame索引

df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})

# 列選擇
print(df['A'])        # 獲取A列

# 行選擇
print(df.loc[0])      # 第一行
print(df.iloc[0:2])   # 前兩行

# 行列組合
print(df.loc[0, 'A']) # 1

5.2 數據修改

5.2.1 添加/修改列

df['C'] = df['A'] + df['B']  # 新增列
df['A'] = [10, 20, 30]       # 修改列

5.2.2 刪除數據

# 刪除列
df.drop('A', axis=1, inplace=True)

# 刪除行
df.drop([0,1], axis=0, inplace=True)

六、實際應用示例

6.1 數據清洗示例

# 創建含缺失值的數據
df = pd.DataFrame({
    'A': [1, None, 3],
    'B': [None, 5, 6]
})

# 填充缺失值
df_filled = df.fillna({'A': df['A'].mean(), 'B': 0})

6.2 數據分析示例

# 創建銷售數據
sales = pd.DataFrame({
    '日期': pd.date_range('20230101', periods=5),
    '產品': ['A', 'B', 'A', 'C', 'B'],
    '銷量': [120, 150, 80, 200, 90]
})

# 按產品匯總
summary = sales.groupby('產品')['銷量'].sum()

七、性能優化建議

  1. 避免循環:盡量使用向量化操作
  2. 選擇合適的數據類型:如用category代替object
  3. 使用eval()/query():加速布爾運算
  4. 分塊處理:大數據集使用chunksize參數
  5. 使用高效函數:如nlargest()代替sort_values().head()

八、總結

Pandas的Series和DataFrame為數據分析提供了強大的基礎工具。通過本文的學習,您應該已經掌握:

  1. 兩種核心數據結構的特點與差異
  2. 多種創建Series和DataFrame的方法
  3. 基本的數據選擇和操作技巧
  4. 簡單的實際應用場景

建議讀者通過實際數據集練習這些操作,逐步掌握Pandas的強大功能。后續可以進一步學習: - 數據清洗與預處理 - 數據聚合與分組操作 - 時間序列處理 - 性能優化技巧 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女