最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、 Pandas簡(jiǎn)介

1. 簡(jiǎn)介

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

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

2. 主要特點(diǎn)

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

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

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

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

(三)時(shí)間序列分析支持

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

(四)與其他庫(kù)的兼容性

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

3.應(yīng)用場(chǎng)景

(一)金融領(lǐng)域

在金融數(shù)據(jù)分析中,Pandas可以用來(lái)處理股票價(jià)格數(shù)據(jù)、交易數(shù)據(jù)等。例如,通過(guò)讀取股票價(jià)格的時(shí)間序列數(shù)據(jù),可以計(jì)算股票的收益率、移動(dòng)平均線等指標(biāo)。還可以對(duì)多個(gè)股票的收益率數(shù)據(jù)進(jìn)行合并,分析股票之間的相關(guān)性。此外,Pandas也可以用于風(fēng)險(xiǎn)管理,比如通過(guò)分析交易數(shù)據(jù)來(lái)識(shí)別異常交易行為。

(二)數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)

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

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

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

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

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

二、Pandas庫(kù)的常見用法

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

1.1 讀取CSV文件

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

import pandas as pd

# 讀取CSV文件
df = pd.read_csv('2010-2024年國(guó)家經(jīng)濟(jì)運(yùn)行情況.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)濟(jì)運(yùn)行情況.xlsx',encoding='gbk')
 
# 顯示前5行數(shù)據(jù)
print(df.head())

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

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

# 連接到SQLite數(shù)據(jù)庫(kù)
conn = sqlite3.connect('economics_data.db')  
 # 從數(shù)據(jù)庫(kù)表中讀取數(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年北京報(bào)告數(shù)據(jù).json", orient="records")

參數(shù)

  • orient:指定JSON文件的格式,常見的有’records’(每行是一個(gè)JSON對(duì)象)、‘split’(鍵值對(duì)分開存儲(chǔ))等。
    • ‘records’:JSON 是一個(gè)記錄列表,每個(gè)記錄是一個(gè)字典,這是默認(rèn)值。
    • ‘index’:JSON 的鍵是索引,值是列。
    • ‘columns’:JSON 的鍵是列,值是索引。
    • ‘values’:JSON 是一個(gè)二維數(shù)組,每一行是一個(gè)記錄。
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)建一個(gè) 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ù)說(shuō)明

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

2.2 寫入Excel文件

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

# 創(chuàng)建一個(gè) 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ù)說(shuō)明

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

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

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

# 創(chuàng)建一個(gè) 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ù)庫(kù)連接
conn = create_engine('mysql+pymysql://root:123456@localhost:3306/exam_db?charset=utf8') 

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

參數(shù)說(shuō)明

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

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

3.1 處理缺失值

(1)檢查缺失值

  • 使用isnull()或isna()方法可以檢查數(shù)據(jù)中的缺失值。
# 返回一個(gè)布爾型DataFrame,缺失值為True
print(df.isnull()) 
# 統(tǒng)計(jì)每列的缺失值數(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 處理重復(fù)數(shù)據(jù)

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

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

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

  • 使用drop_duplicates()方法可以刪除重復(fù)行。
# 刪除重復(fù)行
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)換為浮點(diǎ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'
        }
 )

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

import pandas as pd

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

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

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

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

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

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

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

(1)查看DataFrame的前幾行

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

(2)查看DataFrame的后幾行

  • 使用tail()方法可以查看DataFrame的后幾行,默認(rèn)顯示后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)計(jì)

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

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

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

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

(3)計(jì)算相關(guān)系數(shù)

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

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

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

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

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

5.1 通過(guò)布爾表達(dá)式篩選

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

5.2 按索引篩選

  • Pandas中使用loc()和iloc()可以按索引進(jìn)行篩選。
    • loc:基于標(biāo)簽索引,可以同時(shí)指定行和列。
    • 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中可以通過(guò)列名直接選擇列。
# 選擇單列
selected_column = df['列名'] 
# 選擇多列
selected_columns = df[['列名1', '列名2']] 

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

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

(1)按列值排序

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

(2)按索引排序

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

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

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

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

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

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

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

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

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

  • Pandas中使用pivot()用于將長(zhǎng)格式數(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進(jìn)行重塑
pivot_df = df.pivot(index='日期', columns='變量', values='值')
print("Pivot結(jié)果:\n", pivot_df)

輸出:

參數(shù)說(shuō)明:

  • 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)建有重復(fù)值的數(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進(jìn)行聚合
pivot_table_df = pd.pivot_table(df, values='值', index='日期', columns='變量', aggfunc=np.mean)
print("\nPivot Table結(jié)果:\n", pivot_table_df)

輸出:

參數(shù)說(shuō)明:

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

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

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

  • Pandas中使用merge()方法可以將兩個(gè)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()方法可以將多個(gè)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í)間序列數(shù)據(jù)處理

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

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

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

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

8.3 時(shí)間窗口計(jì)算

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

在股票行情計(jì)算時(shí),可使用rolling()方法計(jì)算MA移動(dòng)平均線。

# 計(jì)算移動(dòng)平均線
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é) 

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

相關(guān)文章

  • python twilio模塊實(shí)現(xiàn)發(fā)送手機(jī)短信功能

    python twilio模塊實(shí)現(xiàn)發(fā)送手機(jī)短信功能

    這篇文章主要介紹了python twilio模塊實(shí)現(xiàn)發(fā)送手機(jī)短信的功能,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 使用Rasterio讀取柵格數(shù)據(jù)的實(shí)例講解

    使用Rasterio讀取柵格數(shù)據(jù)的實(shí)例講解

    今天小編就為大家分享一篇使用Rasterio讀取柵格數(shù)據(jù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python?中?Selenium?的?send_keys()?函數(shù)用法小結(jié)

    Python?中?Selenium?的?send_keys()?函數(shù)用法小結(jié)

    send_keys() 是將數(shù)字、文本和符號(hào)等鍵盤輸入發(fā)送到應(yīng)用程序的文本框的過(guò)程, send_keys() 是 WebDriver 的一部分,每個(gè)鍵盤輸入都會(huì)發(fā)送到此元素,這篇文章主要介紹了Python?中?Selenium?的?send_keys()?函數(shù),需要的朋友可以參考下
    2023-11-11
  • python run和debug程序的操作過(guò)程

    python run和debug程序的操作過(guò)程

    有的時(shí)候我們需要再vscode里面調(diào)試python代碼,但是我們還需要為不同的文件設(shè)置不同的調(diào)試參數(shù),如設(shè)置python解釋器,設(shè)置輸入?yún)?shù)等,下面我們聊聊如何再vscode進(jìn)行上述的調(diào)試和運(yùn)行,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • flask框架渲染Jinja模板與傳入模板變量操作詳解

    flask框架渲染Jinja模板與傳入模板變量操作詳解

    這篇文章主要介紹了flask框架渲染Jinja模板與傳入模板變量操作,結(jié)合實(shí)例形式詳細(xì)分析了flask框架模板相關(guān)原理、模板渲染、傳入?yún)?shù)等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • Python使用CRC32實(shí)現(xiàn)校驗(yàn)文件

    Python使用CRC32實(shí)現(xiàn)校驗(yàn)文件

    CRC文件校驗(yàn)是一種用于驗(yàn)證文件完整性的方法,通過(guò)計(jì)算文件的CRC值并與預(yù)先計(jì)算的CRC校驗(yàn)值進(jìn)行比較,來(lái)判斷文件是否發(fā)生變化,本文我們就來(lái)介紹一下Python如何利用CRC32實(shí)現(xiàn)校驗(yàn)文件吧
    2023-10-10
  • python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)(一)

    python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)(一)

    這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)第一篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python如何實(shí)現(xiàn)convolution neural network卷積神經(jīng)網(wǎng)絡(luò)算法

    python如何實(shí)現(xiàn)convolution neural network卷積神經(jīng)網(wǎng)絡(luò)算法

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)是深度學(xué)習(xí)中重要的算法之一,主要應(yīng)用于圖像識(shí)別和處理領(lǐng)域,其基本原理是模擬人類視覺系統(tǒng),通過(guò)卷積層、激活函數(shù)和池化層等組件提取圖像的特征,并通過(guò)全連接層進(jìn)行分類或其他任務(wù),CNN訓(xùn)練過(guò)程中使用大量標(biāo)記圖像數(shù)據(jù)
    2024-10-10
  • Python辦公自動(dòng)化之文件的比較合并與xml操作

    Python辦公自動(dòng)化之文件的比較合并與xml操作

    這篇文章主要為大家詳細(xì)介紹了Python辦公自動(dòng)化之文件的比較合并與xml文件操作的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-12-12
  • 使用Python發(fā)現(xiàn)隱藏的wifi

    使用Python發(fā)現(xiàn)隱藏的wifi

    今天與大家一起分享使用Python來(lái)發(fā)現(xiàn)隱藏的wifi,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

麻江县| 雅安市| 玉田县| 霍山县| 宁都县| 泽普县| 荥经县| 松江区| 玛多县| 扎赉特旗| 陆丰市| 全南县| 虞城县| 安龙县| 陇南市| 伊川县| 蒙山县| 泸溪县| 治多县| 伊宁市| 泰州市| 绥棱县| 亚东县| 峨边| 边坝县| 象州县| 阜南县| 宜兰市| 邵阳县| 孟连| 武鸣县| 顺义区| 格尔木市| 泸西县| 临城县| 汕头市| 仁布县| 沧州市| 阿拉善左旗| 井冈山市| 班玛县|