【python】python油田數據分析與可視化(源碼+數據集)【獨一無二】

請添加圖片描述


👉博__主👈:米碼收割機
👉技__能👈:C++/Python語言
👉專__注👈:專注主流機器人、人工智能等相關領域的開發、測試技術。


【python】python油田數據分析與可視化(源碼+數據集)【獨一無二】


目錄

  • 【python】python油田數據分析與可視化(源碼+數據集)【獨一無二】
  • 一、設計要求
  • 二、設計思路
      • **油田數據分析與可視化——設計思路**
        • **1. 項目背景**
        • **2. 代碼結構分析**
    • **第一步:數據讀取**
      • **1.1 讀取各油田數據**
    • **第二步:數據預處理**
      • **2.1 轉換日期格式**
      • **2.2 計算總產液量**
      • **2.3 計算各井的平均日產液量/注水量**
      • **2.4 合并井位信息**
    • **第三步:數據可視化**
      • **3.1 井位分布散點圖**
      • **3.2 產量變化趨勢折線圖**
      • **3.3 產量對比條形圖**
      • **3.4 產量構成餅圖**
      • **3.5 單井日產量分布直方圖**
    • **第四步:數據導出**


一、設計要求

本項目旨在開發一個 油田數據分析與可視化系統,實現 數據讀取、清洗、統計分析、可視化展示數據導出 功能。系統支持讀取 產量、井位、注水 數據,進行格式標準化、缺失值處理及衍生變量計算,并通過 井位分布圖、趨勢折線圖、對比條形圖、餅圖、直方圖 展示數據分析結果。同時,支持數據導出為 Excel,提高數據管理和決策效率。采用 Python(pandas、matplotlib、numpy) 開發,優化大規模數據處理,確保計算高效、可視化直觀,并具備未來擴展為 Web 平臺或 AI 預測系統的潛力。

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述


二、設計思路

油田數據分析與可視化——設計思路

1. 項目背景

本項目的目標是對油田數據進行清洗、分析,并以可視化方式呈現油井的分布情況、產量變化趨勢及統計特征。數據源主要包括不同油田的 產量數據井位數據注水數據,最終通過 Matplotlib 進行可視化展示。

2. 代碼結構分析

整個代碼可以分為以下幾個主要步驟:

  1. 數據讀取
  2. 數據預處理
  3. 數據可視化
  4. 數據導出(可選)

在這里插入圖片描述

第一步:數據讀取

該部分的主要任務是加載不同油田的CSV數據文件,使用 pandas 讀取數據集,并存入 DataFrame 進行后續處理。

1.1 讀取各油田數據

數據主要分為以下幾類:

  • JL油田
    • JL油田-近期產量數據.csv(包含日產油量、日產水量、日產氣量)
    • JL油田-井位井別.csv(包含井的坐標、采油井/注水井類別)
    • JL油田-注水數據.csv(包含日注水量)
  • ML油田
    • ML油田-井位井別.csv(井位信息)
    • ML油田-注水數據.csv(僅有注水量,無產油產水數據)
  • WL油田
    • WL油田-近期產量數據.csv
    • WL油田-井位井別.csv
    • WL油田-注水數據.csv

實現方式

df_jl_prod = pd.read_csv("JL油田-近期產量數據.csv")  
# 代碼略....

第二步:數據預處理

數據預處理的核心目標是確保數據格式一致,填充缺失值,并計算衍生變量。例如:

  1. 轉換日期格式
  2. 計算總產液量
  3. 計算各井的平均日產液量/注水量
  4. 合并不同數據表

2.1 轉換日期格式

確保 日期 字段是 datetime 格式,以便后續時間序列分析:

df_jl_prod['日期'] = pd.to_datetime(df_jl_prod['日期'])
df_jl_inj['日期'] = pd.to_datetime(df_jl_inj['日期'])

2.2 計算總產液量

df_jl_prod['產液量'] = df_jl_prod['日產油量'] + df_jl_prod['日產水量']

此計算反映了井的 總液體產出(油 + 水),用于衡量單井或油田的生產能力。

2.3 計算各井的平均日產液量/注水量

對于采油井,計算 平均日產液量

jl_prod_group = df_jl_prod.groupby('井名', as_index=False)['產液量'].mean()
jl_prod_group.rename(columns={'產液量': '平均日產液量'}, inplace=True)

對于注水井,計算 平均日注水量

jl_inj_group = df_jl_inj.groupby('井名', as_index=False)['日注水量'].mean()
jl_inj_group.rename(columns={'日注水量': '平均日注水量'}, inplace=True)

在這里插入圖片描述

2.4 合并井位信息

將井位數據與計算出的 日產液量/注水量 進行合并,確保繪制散點圖時每個井的數值信息完整:

df_jl_loc['平均日產液量/注水量'] = 0.0
for i in range(len(df_jl_loc)):well = df_jl_loc.loc[i, '井名']cate = df_jl_loc.loc[i, '注采類別:1采油井;0注水井']if cate == 1:  # 代碼略....else:  val = jl_inj_group[jl_inj_group['井名'] == well]['平均日注水量']if not val.empty:df_jl_loc.loc[i, '平均日產液量/注水量'] = val.values[0]

第三步:數據可視化

數據可視化分為以下幾類:

  1. 井位分布散點圖

  2. 產量變化趨勢折線圖

  3. 產量對比條形圖

  4. 產量構成餅圖

  5. 單井日產量分布直方圖


3.1 井位分布散點圖

以散點圖展示井的地理位置,顏色區分 采油井/注水井,點的大小表示產量或注水量:

plt.scatter(df_jl_loc['X'], df_jl_loc['Y'], s=df_jl_loc['平均日產液量/注水量'] * 50, c=df_jl_loc['注采類別:1采油井;0注水井'], cmap='coolwarm', alpha=0.6)

在這里插入圖片描述

3.2 產量變化趨勢折線圖

繪制 不同油田的日產油、日產水、日產氣、日注水量隨時間變化

plt.plot(jl_daily['日期'], jl_daily['日產油量'], marker='o', label='日產油量')
plt.plot(jl_daily['日期'], jl_daily['日產水量'], marker='s', label='日產水量')
plt.plot(jl_daily['日期'], jl_daily['日產氣量'], marker='^', label='日產氣量')
plt.plot(jl_daily['日期'], jl_daily['日注水量'], marker='d', label='日注水量')

在這里插入圖片描述
在這里插入圖片描述

3.3 產量對比條形圖

繪制 不同油田的總產量

plt.bar(x - 1.5*width, oil_data, width, label='總產油量')
plt.bar(x - 0.5*width, water_data, width, label='總產水量')
plt.bar(x + 0.5*width, gas_data, width, label='總產氣量')
plt.bar(x + 1.5*width, inj_data, width, label='總注水量')

在這里插入圖片描述

3.4 產量構成餅圖

展示 不同油田的產油/產水/產氣比例

plt.pie(jl_values, labels=jl_labels, autopct='%1.1f%%', startangle=140)

在這里插入圖片描述

3.5 單井日產量分布直方圖

展示 單井日產油量/日注水量的分布

plt.hist(df_jl_prod['日產油量'], bins=10, color='orange', alpha=0.7, edgecolor='black')

在這里插入圖片描述


第四步:數據導出

最終結果可保存為 Excel:

df_jl_prod.to_excel("油田數據匯總.xlsx", sheet_name="JL產量數據", index=False)

該代碼實現了 油田數據分析與可視化,涵蓋 數據清洗、統計計算、圖表展示,有助于油田生產管理和決策支持。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67776.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FBX SDK的使用:基礎知識

Windows環境配置 FBX SDK安裝后,目錄下有三個文件夾: include 頭文件lib 編譯的二進制庫,根據你項目的配置去包含相應的庫samples 官方使用案列 動態鏈接 libfbxsdk.dll, libfbxsdk.lib是動態庫,需要在配置屬性->C/C->預…

【單層神經網絡】基于MXNet庫簡化實現線性回歸

寫在前面 同最開始的兩篇文章 完整程序及注釋 導入使用的庫# 基本 from mxnet import autograd, nd, gluon # 模型、網絡 from mxnet.gluon import nn from mxnet import init # 學習 from mxnet.gluon import loss as gloss # 數據集 from mxnet.gluon…

【爬蟲】JS逆向解決某藥的商品價格加密

??????????歡迎來到我的博客?????????? ??作者:秋無之地 ??簡介:CSDN爬蟲、后端、大數據領域創作者。目前從事python爬蟲、后端和大數據等相關工作,主要擅長領域有:爬蟲、后端、大數據開發、數據分析等。 ??歡迎小伙伴們點贊????、收藏??、…

OpenAI開源戰略反思:中國力量推動AI產業變革

在周五的Reddit問答會上,OpenAI首席執行官Sam Altman罕見承認公司正面臨來自中國科技企業的強勁挑戰。這位向來強硬的硅谷領軍者坦言,以深度求索(DeepSeek)為代表的中國AI公司正在改寫行業游戲規則。 這場歷時三小時的對話揭示了…

一文講解HashMap線程安全相關問題(上)

HashMap不是線程安全的,主要有以下幾個問題: ①、多線程下擴容會死循環。JDK1.7 中的 HashMap 使用的是頭插法插入元素,在多線程的環境下,擴容的時候就有可能導致出現環形鏈表,造成死循環。 JDK 8 時已經修復了這個問…

android java系統彈窗的基礎模板

1、資源文件 app\src\main\res\layout下增加custom_pop_layout.xml 定義彈窗的控件資源。 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/…

python學習——常用的內置函數匯總

文章目錄 類型轉換函數數學函數常用的迭代器操作函數常用的其他內置函數 類型轉換函數 數學函數 常用的迭代器操作函數 實操&#xff1a; from cv2.gapi import descr_oflst [55, 42, 37, 2, 66, 23, 18, 99]# (1) 排序操作 asc_lst sorted(lst) # 升序 desc_lst sorted(l…

《解鎖AI黑科技:數據分類聚類與可視化》

在當今數字化時代&#xff0c;數據如潮水般涌來&#xff0c;如何從海量數據中提取有價值的信息&#xff0c;成為了眾多領域面臨的關鍵挑戰。人工智能&#xff08;AI&#xff09;技術的崛起&#xff0c;為解決這一難題提供了強大的工具。其中&#xff0c;能夠實現數據分類與聚類…

MySQL數據庫環境搭建

下載MySQL 官網&#xff1a;https://downloads.mysql.com/archives/installer/ 下載社區版就行了。 安裝流程 看b站大佬的視頻吧&#xff1a;https://www.bilibili.com/video/BV12q4y1477i/?spm_id_from333.337.search-card.all.click&vd_source37dfd298d2133f3e1f3e3c…

AI學習指南HuggingFace篇-Tokenizers 與文本處理

一、引言 在自然語言處理(NLP)中,文本數據的預處理是至關重要的一步。分詞器(Tokenizers)是將文本分割成單詞、短語或其他單元的工具,是文本處理的基礎。Hugging Face的Tokenizers庫提供了高效且靈活的分詞工具,支持多種預訓練模型的分詞需求。本文將深入講解Tokenizer…

如何用微信小程序寫春聯

? 生活沒有模板,只需心燈一盞。 如果笑能讓你釋然,那就開懷一笑;如果哭能讓你減壓,那就讓淚水流下來。如果沉默是金,那就不用解釋;如果放下能更好地前行,就別再扛著。 一、引入 Vant UI 1、通過 npm 安裝 npm i @vant/weapp -S --production?? 2、修改 app.json …

[SAP ABAP] 靜態斷點的使用

在 ABAP 編程環境中&#xff0c;靜態斷點通過關鍵字BREAK-POINT實現&#xff0c;當程序執行到這一語句時&#xff0c;會觸發調試器中斷程序的運行&#xff0c;允許開發人員檢查當前狀態并逐步跟蹤后續代碼邏輯 通常情況下&#xff0c;在代碼的關鍵位置插入靜態斷點可以幫助開發…

96,【4】 buuctf web [BJDCTF2020]EzPHP

進入靶場 查看源代碼 GFXEIM3YFZYGQ4A 一看就是編碼后的 1nD3x.php 訪問 得到源代碼 <?php // 高亮顯示當前 PHP 文件的源代碼&#xff0c;用于調試或展示代碼結構 highlight_file(__FILE__); // 關閉所有 PHP 錯誤報告&#xff0c;防止錯誤信息泄露可能的安全漏洞 erro…

基于深度學習的輸電線路缺陷檢測算法研究(論文+源碼)

輸電線路關鍵部件的缺陷檢測對于電網安全運行至關重要&#xff0c;傳統方法存在效率低、準確性不高等問題。本研究探討了利用深度學習技術進行輸電線路關鍵組件的缺陷檢測&#xff0c;目的是提升檢測的效率與準確度。選用了YOLOv8模型作為基礎&#xff0c;并通過加入CA注意力機…

3、從langchain到rag

文章目錄 本文介紹向量和向量數據庫向量向量數據庫 索引開始動手實現rag加載文檔數據并建立索引將向量存放到向量數據庫中檢索生成構成一條鏈 本文介紹 從本節開始&#xff0c;有了上一節的langchain基礎學習&#xff0c;接下來使用langchain實現一個rag應用&#xff0c;并稍微…

DeepSeek-R1大模型本地化部署

前言 Ollama作為一個輕量級、易上手的工具&#xff0c;可以幫助你在自己的電腦上快速部署和運行大型語言模型&#xff0c;無需依賴云端服務。通過加載各種開源模型&#xff0c;比如LLaMA、GPT-J等&#xff0c;并通過簡單的命令行操作進行模型推理和測試。 此小結主要介紹使用…

【小白學AI系列】NLP 核心知識點(五)Transformer介紹

Transformer Transformer 是一種基于自注意力機制&#xff08;Self-Attention Mechanism&#xff09;的深度學習模型&#xff0c;首次由 Vaswani 等人于 2017 年在論文《Attention is All You Need》中提出。與 RNN 和 LSTM 不同&#xff0c;Transformer 不需要依靠序列順序進…

【高級篇 / IPv6】(7.6) ? 03. 寬帶IPv6 - ADSL撥號寬帶上網配置 ? FortiGate 防火墻

【簡介】大部分ADSL撥號寬帶都支持IPv6&#xff0c;這里以ADSL撥號寬帶為例&#xff0c;演示在FortiGate防火墻上的配置方法。 準備工作 同上篇文章一樣&#xff0c;為了兼顧不熟悉FortiGate防火墻的朋友&#xff0c;我們從基礎操作進行演示&#xff0c;熟練的朋友可以跳過這一…

【Elasticsearch】_all 查詢

在 Elasticsearch 中&#xff0c;_all 查詢是一種特殊的查詢方式&#xff0c;用于在多個索引或數據流中執行搜索操作&#xff0c;而無需顯式指定每個目標索引或數據流的名稱。以下是關于 _all 查詢的詳細說明&#xff1a; _all 查詢概述 用途&#xff1a;_all 查詢允許您在多個…

Linux第104步_基于AP3216C之I2C實驗

Linux之I2C實驗是在AP3216C的基礎上實現的&#xff0c;進一步熟悉修改設備樹和編譯設備樹&#xff0c;以及學習如何編寫I2C驅動和APP測試程序。 1、AP3216C的原理圖 AP3216C集成了一個光強傳感器ALS&#xff0c;一個接近傳感器PS和一個紅外LED&#xff0c;為三合一的環境傳感…