亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python?Pandas庫簡介及一些常見用法總結(jié)

 更新時間:2025年07月08日 10:41:11   作者:夜影風  
Pandas庫是Python的免費、開源的第三方庫,Pandas是Python數(shù)據(jù)分析必不可少的工具之一,這篇文章主要介紹了Python?Pandas庫簡介及一些常見用法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、 Pandas簡介

1. 簡介

Pandas是一個開源的Python數(shù)據(jù)分析庫,它提供了高性能、易用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。Pandas的名字來源于“Panel Data”(面板數(shù)據(jù)),它主要用于處理結(jié)構(gòu)化數(shù)據(jù),例如表格數(shù)據(jù)、時間序列數(shù)據(jù)等。Pandas是在NumPy庫的基礎上構(gòu)建的,它繼承了NumPy的高性能數(shù)組計算能力,并在此基礎上增加了對復雜數(shù)據(jù)操作的支持。它提供了兩種主要的數(shù)據(jù)結(jié)構(gòu):Series(一維數(shù)組)和DataFrame(二維表格),使得數(shù)據(jù)處理更加高效和便捷。

Pandas最初由Wes McKinney在2008年創(chuàng)建,目的是為了滿足金融數(shù)據(jù)分析的需求。隨著時間的推移,它已經(jīng)成為Python數(shù)據(jù)分析生態(tài)系統(tǒng)中不可或缺的一部分,被廣泛應用于數(shù)據(jù)科學、機器學習、金融、統(tǒng)計等多個領域。

2. 主要特點

(一)強大的數(shù)據(jù)結(jié)構(gòu)

  • DataFrame:這是Pandas中最核心的數(shù)據(jù)結(jié)構(gòu)之一,它是一個二維表格型數(shù)據(jù)結(jié)構(gòu),類似于Excel中的表格。DataFrame的每一列可以存儲不同類型的數(shù)據(jù)(如數(shù)字、字符串等),并且可以通過列名和行索引來訪問數(shù)據(jù)。例如,我們可以創(chuàng)建一個包含員工信息(姓名、年齡、部門等)的DataFrame,通過列名“姓名”來獲取所有員工的名字,或者通過行索引來獲取特定員工的全部信息。
  • Series:Series是一個一維數(shù)組,類似于NumPy數(shù)組,但它可以帶有索引。索引可以是整數(shù)、字符串等任何哈希類型。Series在處理單列數(shù)據(jù)時非常方便,比如對一組時間序列數(shù)據(jù)(如股票價格)進行操作,可以通過日期索引來快速訪問特定時間點的價格。

(二)靈活的數(shù)據(jù)操作

  • 數(shù)據(jù)清洗:Pandas提供了豐富的數(shù)據(jù)清洗功能,可以輕松處理缺失值(如填充缺失值、刪除缺失值)、重復數(shù)據(jù)(如刪除重復行)、異常值等。例如,對于一個包含缺失值的DataFrame,我們可以使用fillna()方法來填充缺失值,或者使用dropna()方法來刪除包含缺失值的行。
  • 數(shù)據(jù)篩選:可以使用布爾索引、標簽索引、位置索引等多種方式對數(shù)據(jù)進行篩選。例如,我們可以通過布爾表達式df[df[‘年齡’] > 30]來篩選出年齡大于30的員工數(shù)據(jù)。
  • 數(shù)據(jù)合并:Pandas支持多種數(shù)據(jù)合并操作,如concat()(用于連接多個數(shù)據(jù)結(jié)構(gòu))、merge()(類似于SQL中的JOIN操作,可以根據(jù)指定的鍵將兩個DataFrame合并在一起)和join()(基于索引進行合并)。這些功能使得在處理多個數(shù)據(jù)源時可以方便地將它們整合到一起。比如,將員工信息表和員工績效表根據(jù)員工ID進行合并。
  • 數(shù)據(jù)分組與聚合:通過groupby()方法可以對數(shù)據(jù)進行分組,然后對每個分組應用聚合函數(shù)(如求和、求平均、計數(shù)等)。例如,對銷售數(shù)據(jù)按照地區(qū)分組,然后計算每個地區(qū)的總銷售額。

(三)時間序列分析支持

Pandas對時間序列數(shù)據(jù)提供了強大的支持。它可以直接解析日期時間字符串,生成時間序列索引。例如,pd.date_range(start=‘2024-01-01’, end=‘2024-12-31’, freq=‘D’)可以生成一個從2024年1月1日到2024年12月31日的每日時間序列索引。此外,Pandas還支持時間頻率的轉(zhuǎn)換(如將日數(shù)據(jù)轉(zhuǎn)換為月數(shù)據(jù))、時間窗口計算(如計算移動平均值)等操作,這使得它在金融數(shù)據(jù)分析、氣象數(shù)據(jù)分析等涉及時間序列的領域非常有用。

(四)與其他庫的兼容性

Pandas可以無縫地與Python的其他數(shù)據(jù)分析和科學計算庫配合使用。例如,它可以與NumPy進行高效的數(shù)組操作,與Matplotlib進行數(shù)據(jù)可視化,與Scikit - learn進行機器學習模型的訓練和預測。這種良好的兼容性使得Pandas能夠融入完整的數(shù)據(jù)分析工作流中。

3.應用場景

(一)金融領域

在金融數(shù)據(jù)分析中,Pandas可以用來處理股票價格數(shù)據(jù)、交易數(shù)據(jù)等。例如,通過讀取股票價格的時間序列數(shù)據(jù),可以計算股票的收益率、移動平均線等指標。還可以對多個股票的收益率數(shù)據(jù)進行合并,分析股票之間的相關性。此外,Pandas也可以用于風險管理,比如通過分析交易數(shù)據(jù)來識別異常交易行為。

(二)數(shù)據(jù)科學與機器學習

在數(shù)據(jù)科學項目中,Pandas是數(shù)據(jù)預處理的重要工具。數(shù)據(jù)科學家可以使用Pandas來加載數(shù)據(jù)(如從CSV文件、數(shù)據(jù)庫等來源加載)、清洗數(shù)據(jù)(處理缺失值、異常值等)、探索數(shù)據(jù)(計算描述性統(tǒng)計量、繪制數(shù)據(jù)分布圖等)。在機器學習中,Pandas可以將數(shù)據(jù)集劃分為訓練集和測試集,還可以對特征數(shù)據(jù)進行標準化、歸一化等操作,為機器學習模型的訓練做好準備。

(三)商業(yè)數(shù)據(jù)分析

商業(yè)分析師可以使用Pandas來分析銷售數(shù)據(jù)、客戶數(shù)據(jù)等。例如,通過分析銷售數(shù)據(jù)的時間序列,可以發(fā)現(xiàn)銷售的季節(jié)性規(guī)律;通過分析客戶數(shù)據(jù),可以對客戶進行分群(如使用groupby()方法根據(jù)客戶消費金額分組),并計算每個客戶群的特征(如平均消費金額、購買頻率等)。這些分析結(jié)果可以幫助企業(yè)制定營銷策略、優(yōu)化產(chǎn)品布局等。

(四)生物醫(yī)學研究

在生物醫(yī)學領域,Pandas可以用于處理實驗數(shù)據(jù),如基因表達數(shù)據(jù)、臨床試驗數(shù)據(jù)等。研究人員可以使用Pandas來整理數(shù)據(jù)格式、篩選特定的樣本或基因,還可以對數(shù)據(jù)進行統(tǒng)計分析,如計算基因表達的差異等。

二、Pandas庫的常見用法

1. 數(shù)據(jù)讀取

1.1 讀取CSV文件

Pandas加載CSV文件并在 Python 中以編程方式操作它。 Pandas的核心是“DataFrame”的對象類型- 本質(zhì)上是一個值表,每行和每列都有一個標簽。用read_csv()方法加載CSV 文件:

import pandas as pd

# 讀取CSV文件
df = pd.read_csv('2010-2024年國家經(jīng)濟運行情況.csv',encoding='utf-8')
 
# 顯示前5行數(shù)據(jù)
print(df.head())

1.2 讀取Excel文件

  • 使用pd.read_excel()方法可以讀取Excel文件(.xls或.xlsx格式)。
import pandas as pd

# 讀取Excel文件
df = pd.read_excel('2010-2024年北京市經(jīng)濟運行情況.xlsx',encoding='gbk')
 
# 顯示前5行數(shù)據(jù)
print(df.head())

1.3 讀取數(shù)據(jù)庫數(shù)據(jù)

  • 使用pd.read_sql()方法可以從數(shù)據(jù)庫中讀取數(shù)據(jù)。
import pandas as pd
import sqlite3

# 連接到SQLite數(shù)據(jù)庫
conn = sqlite3.connect('economics_data.db')  
 # 從數(shù)據(jù)庫表中讀取數(shù)據(jù)
df = pd.read_sql('SELECT * FROM table_name', conn) 

1.4 讀取JSON數(shù)據(jù)

  • 使用pd.read_json()方法可以讀取JSON格式的文件。
import pandas as pd

df = pd.read_json("2025年北京報告數(shù)據(jù).json", orient="records")

參數(shù)

  • orient:指定JSON文件的格式,常見的有’records’(每行是一個JSON對象)、‘split’(鍵值對分開存儲)等。
    • ‘records’:JSON 是一個記錄列表,每個記錄是一個字典,這是默認值。
    • ‘index’:JSON 的鍵是索引,值是列。
    • ‘columns’:JSON 的鍵是列,值是索引。
    • ‘values’:JSON 是一個二維數(shù)組,每一行是一個記錄。
import pandas as pd

# 示例 JSON 數(shù)據(jù)
json_data = {
    "index": ["row1", "row2"],
    "columns": ["col1", "col2"],
    "data": [[1, 2], [3, 4]]
}
# 使用 orient='split' 讀取
df = pd.read_json(pd.io.json.dumps(json_data), orient='split')
print(df)

2. 寫入數(shù)據(jù)

2.1 寫入CSV文件

  • 使用DataFrame.to_csv()方法可以將DataFrame保存為CSV文件。
import pandas as pd

# 創(chuàng)建一個 DataFrame
data = {
    'name': ['Alice', 'Bob'],
    'age': [25, 30]
}
df = pd.DataFrame(data)

# 將數(shù)據(jù)寫入CSV文件
# index=False表示不保存行索引
df.to_csv('output.csv', index=False)

參數(shù)說明

  • index:是否保存行索引,默認為True。
  • sep:指定分隔符,默認為逗號(,)。

2.2 寫入Excel文件

  • 使用DataFrame.to_excel()方法可以將DataFrame保存為Excel文件。
import pandas as pd

# 創(chuàng)建一個 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Gary', 'Lily'],
    'age': [25, 30, 24, 26],
    'Grade': [97, 76, 61, 88]
}
df = pd.DataFrame(data)

# 寫入Excel文件中
df.to_excel('exam_result.xlsx', sheet_name='Sheet1', index=False)

參數(shù)說明

  • sheet_name:指定保存的工作表名稱。
  • index:是否保存行索引。

2.3 寫入數(shù)據(jù)庫

  • 使用DataFrame.to_sql()方法可以將DataFrame保存到數(shù)據(jù)庫中。
import pandas as pd
from sqlalchemy import create_engine

# 創(chuàng)建一個 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Gary', 'Lily'],
    'age': [25, 30, 24, 26],
    ‘gender': ['F', 'M', 'M', 'F'],
    'Grade': [97, 76, 61, 88]
}
df = pd.DataFrame(data)

# 創(chuàng)建sqlalchemy的數(shù)據(jù)庫連接
conn = create_engine('mysql+pymysql://root:123456@localhost:3306/exam_db?charset=utf8') 

# 寫入數(shù)據(jù)庫中
df.to_sql('exam_result', conn, if_exists='replace', index=False)

參數(shù)說明

  • 第一個參數(shù)是目標數(shù)據(jù)庫表的名稱。
  • conn是數(shù)據(jù)庫連接對象, 必須是sqlalchemy的數(shù)據(jù)庫連接。
  • if_exists:指定如果表已存在時的行為,可選值為’fail’(拋出錯誤)、‘replace’(替換表)、‘append’(追加數(shù)據(jù))。
    index:是否將行索引作為一列保存到數(shù)據(jù)庫中。

3. 數(shù)據(jù)清洗

3.1 處理缺失值

(1)檢查缺失值

  • 使用isnull()或isna()方法可以檢查數(shù)據(jù)中的缺失值。
# 返回一個布爾型DataFrame,缺失值為True
print(df.isnull()) 
# 統(tǒng)計每列的缺失值數(shù)量
print(df.isnull().sum())  

(2)填充缺失值

  • 使用fillna()方法可以填充缺失值。
# 將所有缺失值填充為0
df.fillna(value=0, inplace=True)  
# 用列的均值填充該列的缺失值
df['列名'].fillna(value=df['列名'].mean(), inplace=True)  

(3)刪除缺失值

  • 使用dropna()方法可以刪除包含缺失值的行或列。
# 刪除包含缺失值的行
df.dropna(inplace=True) 
# 刪除包含缺失值的列
df.dropna(axis=1, inplace=True)  

3.2 處理重復數(shù)據(jù)

(1)檢查重復數(shù)據(jù)

  • 使用duplicated()方法可以檢查重復行。
# 返回布爾型Series,重復行為True
print(df.duplicated())  
# 統(tǒng)計重復行的數(shù)量
print(df.duplicated().sum())  

(2)刪除重復數(shù)據(jù)

  • 使用drop_duplicates()方法可以刪除重復行。
# 刪除重復行
df.drop_duplicates(inplace=True)  

3.3 數(shù)據(jù)類型轉(zhuǎn)換

  • 使用astype()方法可以將列的數(shù)據(jù)類型轉(zhuǎn)換為指定類型。
# 將列轉(zhuǎn)換為整數(shù)類型
df['列名'] = df['列名'].astype('int')  
# 將列轉(zhuǎn)換為浮點數(shù)類型
df['列名'] = df['列名'].astype('float')  
# 將列轉(zhuǎn)換為字符串類型
df['列名'] = df['列名'].astype('str')  

3.4 重命名列名

  • 使用rename()方法可以重命名列名。
  • 用法:

    df.rename(columns={‘舊列名1’: ‘新列名1’, ‘舊列名2’: ‘新列名2’}, inplace=True)

stock_data_frame = pd.DataFrame(stock_data).rename(
        columns={
            0: 'SECURITY_CODE',
            1: 'SECURITY_NAME',
            2: 'LATEST_PRICE',
            3: 'PRICES_CHANGE_RATIO',
            4: 'PRICES_CHANGE',
            5: 'TRADING_COUNT',
            6: 'TRADING_VALUE',
            7: 'AMPLITUDE',
            8: 'TURN_OVER_RATIO',
            9: 'PE_RATIO',
            10: 'TRADE_RATIO',
            11: 'MAX_PRICE',
            12: 'MIN_PRICE',
            13: 'OPEN_PRICE',
            14: 'PRE_CLOSE_PRICE',
            15: 'TOTAL_MARKET_VALUE',
            16: 'CIRCULATION_MARKET_VALUE',
            17: 'PB_RATIO',
            18: 'PE_RATIO_TTM',
            19: 'UPWARD_RATE',
            20: 'MONTH_CHANGE_RATIO',
            21: 'YEAR_CHANGE_RATIO',
            22: 'INFLOW_FUNDS'
        }
 )

示例:當前我們有一個包含缺失值和重復值的國家經(jīng)濟運行情況CSV文件,需要進一步清洗數(shù)據(jù)以便后續(xù)分析。

import pandas as pd

# 讀取數(shù)據(jù)
data = pd.read_csv('2010-2024年國家經(jīng)濟運行情況.csv',encoding='utf-8')

# 顯示前五行數(shù)據(jù)
print(data.head())

# 處理缺失值
# 處理1:刪除含有缺失值的行
data = data.dropna() 
# 處理方式2:將缺失值填充為0
data = data.fillna(0)  

# 移除重復值
data = data.drop_duplicates()

# 顯示處理后數(shù)據(jù)的前5條
print(data.head())

4. 數(shù)據(jù)查看與統(tǒng)計

4.1 查看數(shù)據(jù)結(jié)構(gòu)

(1)查看DataFrame的前幾行

  • 使用head()方法可以查看DataFrame的前幾行,默認顯示前5行。
# 查看前5行
print(df.head()) 
# 查看前10行
print(df.head(10))  

(2)查看DataFrame的后幾行

  • 使用tail()方法可以查看DataFrame的后幾行,默認顯示后5行。
# 查看后5行
print(df.tail()) 
# 查看后10行
print(df.tail(10))  

(3)查看DataFrame的行列數(shù)(形狀)

  • 使用shape屬性可以獲取DataFrame的形狀(行數(shù)和列數(shù))。
# 輸出行數(shù)與列數(shù)
print(df.shape)

(4)查看DataFrame的列名

  • 使用columns屬性可以獲取DataFrame的列名。
# 輸出列名
print(df.columns)

(5)查看DataFrame的數(shù)據(jù)類型

  • 使用dtypes屬性可以查看每列的數(shù)據(jù)類型。
# 輸出列的數(shù)據(jù)類型
print(df.dbtypes)

4.2 數(shù)據(jù)統(tǒng)計

(1)描述性統(tǒng)計

  • 使用**describe()**方法可以獲取DataFrame的描述性統(tǒng)計信息,包括均值、標準差、最小值、四分位數(shù)等。
# 默認只對數(shù)值列進行統(tǒng)計
print(df.describe())  
# 對所有列進行統(tǒng)計
print(df.describe(include='all')) 

(2)特定統(tǒng)計量計算

  • 可以使用mean()、median()、std()、sum()、count()等方法計算特定的統(tǒng)計量。
    • mean() : 統(tǒng)計均值
    • median(): 統(tǒng)計中位數(shù)
    • std(): 統(tǒng)計標準差
    • sum(): 數(shù)據(jù)求和統(tǒng)計
    • count(): 統(tǒng)計數(shù)量
# 計算某一列的均值
df['列名'].mean()
# 計算某一列的總和
df['列名'].sum()

(3)計算相關系數(shù)

  • 使用**corr()**方法可以計算DataFrame中數(shù)值列之間的相關系數(shù)。
# 輸出相關系數(shù)矩陣
print(df.corr()) 
  • 示例:
import pandas as pd
import numpy as np

# 創(chuàng)建一個示例 DataFrame
data = {
  'A': np.random.randn(100), # 隨機生成100個標準正態(tài)分布的數(shù)
  'B': np.random.rand(100), # 隨機生成100個在[0,1)區(qū)間均勻分布的數(shù)
  'C': np.random.randint(0, 100, 100), # 隨機生成10個[0,10)之間的整數(shù)
  'D': np.random.randn(100) # 隨機生成100個標準正態(tài)分布的數(shù)
}
df = pd.DataFrame(data)
# 計算 DataFrame 中所有數(shù)值型列的相關系數(shù)
correlation_matrix = df.corr()
print("Correlation Matrix:")
print(correlation_matrix)

(4)計算數(shù)據(jù)分布

  • 使用value_counts()方法可以統(tǒng)計某一列中各個值的出現(xiàn)次數(shù)。
# 統(tǒng)計某一列中各個值的出現(xiàn)次數(shù)
print(df['列名'].value_counts())  

5. 數(shù)據(jù)篩選與過濾

5.1 通過布爾表達式篩選

  • Pandas支持使用布爾表達式可以對DataFrame進行篩選。
# 篩選某一列大于10的行
filtered_df = df[df['列名'] > 10]  
# 使用多個條件進行篩選
filtered_df = df[(df['列名1'] > 10) & (df['列名2'] < 20)]  
  • 示例:根據(jù)條件篩選股票
# 條件選股邏輯:
# - 量比 > 1
# - 換手率 ≥5%且≤10%
# - 振幅 ≥3%且≤10%
# - 流通市值 ≥50億且≤200億
# - 動態(tài)市盈率>0且<= 30(行業(yè)均值×1.5)
# - 資金流 > 500萬
filtered = stock_data_frame[
        # 量比 > 1
        (stock_data_frame['TRADE_RATIO'] > 100) &
        # 換手率在5%至10%區(qū)間
        (stock_data_frame['TURN_OVER_RATIO'] >= 500) &
        (stock_data_frame['TURN_OVER_RATIO'] <= 1000) &
        # 振幅在3%至10%區(qū)間
        (stock_data_frame['AMPLITUDE'] >= 300) &
        (stock_data_frame['AMPLITUDE'] <= 1000) &
        # 流通市值在50億元至200億元區(qū)間
        (stock_data_frame['CIRCULATION_MARKET_VALUE'] >= 5000000000) &
        (stock_data_frame['CIRCULATION_MARKET_VALUE'] <= 20000000000) &
        # 動態(tài)市盈率在0至40之間
        (stock_data_frame['PE_RATIO'] > 0) &
        (stock_data_frame['PE_RATIO'] <= 4000) &
        # 股票收盤價在30元以內(nèi)
        (stock_data_frame['LATEST_PRICE'] <= 3000) &
        # 當日資金流入大于500萬
        (stock_data_frame['INFLOW_FUNDS'] > 5000000)
]

5.2 按索引篩選

  • Pandas中使用loc()和iloc()可以按索引進行篩選。
    • loc:基于標簽索引,可以同時指定行和列。
    • iloc:基于位置索引,只能指定行和列的位置。
# 使用loc
# 選擇第2到第5行,指定列名
selected_df = df.loc[df.index[1:5], ['列名1', '列名2']]  
# 使用iloc
# 選擇第2到第5行,第1和第2列
selected_df = df.iloc[1:5, [0, 1]]  

5.3 按列名篩選

  • Pandas中可以通過列名直接選擇列。
# 選擇單列
selected_column = df['列名'] 
# 選擇多列
selected_columns = df[['列名1', '列名2']] 

6. 數(shù)據(jù)轉(zhuǎn)換與處理

6.1 數(shù)據(jù)排序

(1)按列值排序

  • 使用sort_values()方法可以按列值對DataFrame進行排序。
# 按某一列升序排序
df.sort_values(by='列名', ascending=True, inplace=True)  
# 按多列排序
df.sort_values(by=['列名1', '列名2'], ascending=[True, False], inplace=True)  

(2)按索引排序

  • 使用sort_index()方法可以按索引對DataFrame進行排序。
# 按索引排序
df.sort_index(inplace=True)  

6.2 數(shù)據(jù)分組與聚合

(1)數(shù)據(jù)分組

  • Pandas中使用groupby()方法可以對數(shù)據(jù)進行分組。
# 按某一列分組
grouped = df.groupby('列名')  

# 按多列分組 
grouped = df.groupby(['列名1', '列名2'])  

(2)數(shù)據(jù)聚合

  • Pandas中使用聚合函數(shù)(如sum()、mean()、count()等)對分組后的數(shù)據(jù)進行計算。
# 對分組后的數(shù)據(jù)求和
result = grouped.sum()
 # 對分組后的數(shù)據(jù)求均值  
result = grouped.mean() 
# 對不同列應用不同的聚合函數(shù)
result = grouped.agg({'列名1': 'sum', '列名2': 'mean'})  

6.3 數(shù)據(jù)透視表

(1)數(shù)據(jù)重塑

  • Pandas中使用pivot()用于將長格式數(shù)據(jù)轉(zhuǎn)換為寬格式。
import pandas as pd
import numpy as np

# 創(chuàng)建示例數(shù)據(jù)
data = {
    '日期': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
    '變量': ['A', 'B', 'A', 'B'],
    '值': [10, 20, 30, 40]
}
df = pd.DataFrame(data)

# 使用pivot進行重塑
pivot_df = df.pivot(index='日期', columns='變量', values='值')
print("Pivot結(jié)果:\n", pivot_df)

輸出:

參數(shù)說明:

  • index: 指定作為行索引的列
  • columns: 指定作為列名的列
  • values: 指定填充值的列

(2)數(shù)據(jù)透視

  • Pandas中使用pivot_table()方法可以創(chuàng)建數(shù)據(jù)透視表。
pivot_table = df.pivot_table(index='列名1', columns='列名2', values='列名3', aggfunc='sum')
# 創(chuàng)建有重復值的數(shù)據(jù)
data = {
    '日期': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02'],
    '變量': ['A', 'B', 'A', 'B'],
    '值': [10, 20, 30, 40]
}
df = pd.DataFrame(data)

# 使用pivot_table進行聚合
pivot_table_df = pd.pivot_table(df, values='值', index='日期', columns='變量', aggfunc=np.mean)
print("\nPivot Table結(jié)果:\n", pivot_table_df)

輸出:

參數(shù)說明:

  • aggfunc: 指定聚合函數(shù),默認為np.mean
  • 可以處理重復值,對相同索引和列的組合進行聚合

7. 數(shù)據(jù)合并與連接

7.1 數(shù)據(jù)合并

  • Pandas中使用merge()方法可以將兩個DataFrame按指定的鍵合并,類似于SQL中的JOIN操作。
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value2': [4, 5, 6]})
 # 內(nèi)連接合并
merged_df = pd.merge(df1, df2, on='key', how='inner') 
# 外連接合并
merged_df = pd.merge(df1, df2, on='key', how='outer') 
# 左連接合并
merged_df = pd.merge(df1, df2, on='key', how='left')  
# 右連接合并
merged_df = pd.merge(df1, df2, on='key', how='right')  

輸出結(jié)果:

7.2 數(shù)據(jù)連接

  • Pandas中使用concat()方法可以將多個DataFrame按行或列連接。
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
# 按行連接
concatenated_df = pd.concat([df1, df2], axis=0)  
 # 按列連接
concatenated_df = pd.concat([df1, df2], axis=1) 

輸出結(jié)果:

8. 時間序列數(shù)據(jù)處理

8.1 創(chuàng)建時間序列

  • 使用pd.date_range()可以創(chuàng)建時間序列索引。
 # 每日時間序列
date_range = pd.date_range(start='2024-01-01', end='2024-12-31', freq='D') 
# 創(chuàng)建一個時間序列DataFrame
df = pd.DataFrame({'value': range(len(date_range))}, index=date_range) 

8.2 時間頻率轉(zhuǎn)換

  • 使用resample()方法可以對時間序列數(shù)據(jù)進行頻率轉(zhuǎn)換。
# 將日數(shù)據(jù)轉(zhuǎn)換為月數(shù)據(jù),并求和
monthly_df = df.resample('M').sum()  

8.3 時間窗口計算

  • 使用rolling()方法可以對時間序列數(shù)據(jù)進行窗口計算(如移動平均)。
# 計算7天移動平均值
df['moving_avg'] = df['value'].rolling(window=7).mean()  

在股票行情計算時,可使用rolling()方法計算MA移動平均線。

# 計算移動平均線
stock_data['ma5'] = stock_data['close'].rolling(5).mean()
stock_data['ma10'] = stock_data['close'].rolling(10).mean()
stock_data['ma20'] = stock_data['close'].rolling(20).mean()

總結(jié) 

到此這篇關于Python Pandas庫簡介及一些常見用法的文章就介紹到這了,更多相關Python Pandas庫用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python實現(xiàn)匯率轉(zhuǎn)換操作

    Python實現(xiàn)匯率轉(zhuǎn)換操作

    這篇文章主要介紹了Python實現(xiàn)匯率轉(zhuǎn)換操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python秒算24點實現(xiàn)及原理詳解

    Python秒算24點實現(xiàn)及原理詳解

    這篇文章主要介紹了Python秒算24點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python實現(xiàn)跨平臺桌面應用程序開發(fā)的完整指南

    Python實現(xiàn)跨平臺桌面應用程序開發(fā)的完整指南

    在當今軟件開發(fā)領域,跨平臺應用程序開發(fā)變得越來越重要,下面我們就來探討使用Python進行跨平臺桌面應用程序開發(fā)的主要框架,工具和最佳實踐吧
    2025-04-04
  • python編寫學生成績管理系統(tǒng)的邏輯結(jié)構(gòu)及功能實現(xiàn)

    python編寫學生成績管理系統(tǒng)的邏輯結(jié)構(gòu)及功能實現(xiàn)

    這篇文章主要為大家介紹了python編寫學生成績管理系統(tǒng)實現(xiàn)八個功能示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Python2比較當前圖片跟圖庫哪個圖片相似的方法示例

    Python2比較當前圖片跟圖庫哪個圖片相似的方法示例

    這篇文章主要介紹了Python2比較當前圖片跟圖庫哪個圖片相似的方法,結(jié)合實例形式分析了Python文件目錄操作及圖形運算相關使用技巧,需要的朋友可以參考下
    2019-09-09
  • 基于Python實現(xiàn)下載網(wǎng)易音樂代碼實例

    基于Python實現(xiàn)下載網(wǎng)易音樂代碼實例

    這篇文章主要介紹了基于Python實現(xiàn)下載網(wǎng)易音樂代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Python?獲取md5值(hashlib)常用方法

    Python?獲取md5值(hashlib)常用方法

    這篇文章主要介紹了Python獲取md5值(hashlib)常用方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • 深入理解Python的jieba模塊

    深入理解Python的jieba模塊

    這篇文章主要介紹了深入理解Python的jieba模塊,英語單詞之間是通過空格分隔的,但是中文卻不存在空格的概念,因此需要一個模塊來解決中文的分詞問題,jieba模塊是一個python第三方中文分詞模塊,可以用于將語句中的中文詞語分離出來,需要的朋友可以參考下
    2023-11-11
  • Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解

    Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解

    這篇文章主要介紹了Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Python 實現(xiàn)遞歸法解決迷宮問題的示例代碼

    Python 實現(xiàn)遞歸法解決迷宮問題的示例代碼

    這篇文章主要介紹了Python 實現(xiàn)遞歸法解決迷宮問題的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01

最新評論