《使用Python將Excel數據批量寫入MongoDB數據庫》

????????在數據分析及處理過程中,我們經常需要將數據寫入數據庫。而MongoDB作為一種NoSQL數據庫,其具有強大的可擴展性、高性能以及支持復雜查詢等特性,廣泛用于大規模數據存儲和分析。在這篇文章中,我們將使用Python編寫一個將Excel數據批量寫入MongoDB的腳本,以便更加高效地管理數據。

????????首先,我們需要先安裝必要的依賴包,即pandas和pymongo。在安裝完畢后,我們可以使用如下代碼連接到MongoDB數據庫:

import pandas as pd
from pymongo import MongoClient, UpdateOne# 連接到MongoDB數據庫
client = MongoClient('mongodb://localhost:27017/')
db = client['pms']
collection = db['hospital']

????????在連接到數據庫之后,我們需要讀取Excel文件,并對數據進行初步的處理。在這里,我們使用pandas庫來讀取Excel數據,然后使用一些函數對數據進行清洗和轉換:

# 讀取Excel文件
excel_file = 'D:/下載/各省數據 - 副本/20230407北京各事業部用戶客戶數據匯總.xls'
df = (pd.read_excel(excel_file, skiprows=4, sheet_name='101').iloc[0:-3]  # 刪除倒數3行.iloc[:, 2:]  # 刪除前倆列.drop(columns=['備注'])   # 刪除最后1列.fillna({'護士': 0})  # 用指定的值填充缺失值.ffill()  # 填充空值.assign(  # 拆分序列醫院名稱=lambda x: x['醫院名稱'].str.split("\n"),科室=lambda x: x['科室'].ffill().apply(int),    # 轉換類型床位=lambda x: x['床位'].ffill().apply(int),    # 轉換類型)
)

????????其中,我們使用了一些pandas的函數,如fillna、ffill、drop、assign等來對數據進行處理。處理完成后,我們將數據轉換為列表形式,并使用一個字典來將數據按照醫院進行分組:

data_list = df.values.tolist()
hospitals = {}
for result in data_list:hospital_name = result[0][0]if hospital_name not in hospitals:hospitals[hospital_name] = {'hospital': result[0][0],'department': result[1],'bed': result[2],'doctor': [result[3]],'nurse': [result[4]],}else:if result[3] not in hospitals[hospital_name]['doctor']:hospitals[hospital_name]['doctor'].append(result[3])if result[4] != 0 and result[4] not in hospitals[hospital_name]['nurse']:hospitals[hospital_name]['nurse'].append(result[4])

????????在生成字典之后,我們需要將數據批量寫入MongoDB數據庫中。這里使用了pymongo庫的bulk_write函數,它能夠高效地批量添加、修改和刪除數據:

# 批量添加或更新數據
operations = []
for data in hospitals.values():operations.append(UpdateOne({'hospital': data['hospital']}, {'$set': data}, upsert=True))
result = collection.bulk_write(operations)
print(f'添加或更新數據完畢,共執行 {result.modified_count + result.upserted_count} 項操作。')

????????最后,我們可以通過運行這些代碼來將Excel數據批量寫入MongoDB數據庫。這種方法極大地提高了數據管理的效率,使我們能夠更好地處理數據,更好地進行數據分析。

????????綜上所述,本篇文章介紹了一個簡單的Python腳本,可將Excel數據批量寫入MongoDB數據庫。這個方法不僅高效,而且易于操作,非常適合處理大規模數據。

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

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

相關文章

dos 命令移到文件夾

SET GenFolder C:\Users\administered\Desktop\t2\old_file set path1C:\Users\administered\Desktop\t1\crontab_master set path2C:\Users\administered\Desktop\t2\old_file if not exist %GenFolder% ( echo %GenFolder%目錄不存在,已創建該目錄&#x…

Linux python安裝 虛擬環境 virtualenv,以及 git clone的 文件數據, 以及 下資源配置

根目錄創建 venvs 文件夾 sudo mkdir /venvs 進入 /venvs 目錄 cd /venvsp 創建虛擬環境,前提要按照 python3 安裝 的 命令 sudo apt install python3 sudo python3 -m venv 虛擬環境名 激活虛擬環境 source /venvs/zen-venv/bin/activate 安裝flask pip install fl…

探究Kafka原理-2.Kafka基本命令實操

👏作者簡介:大家好,我是愛吃芝士的土豆倪,24屆校招生Java選手,很高興認識大家📕系列專欄:Spring源碼、JUC源碼、Kafka原理🔥如果感覺博主的文章還不錯的話,請&#x1f44…

搭建Angular并引入NG-ZORRO組件庫

作者:baekpcyyy🐟 1.安裝node.js 注:安裝 16.0 或更高版本的 Node.js node官網:https://nodejs.org/en 2.進入angular官網 https://angular.cn/guide/setup-local 新建一個文件夾 vsc打開 打開終端 1.首先安裝angular手腳架…

怎么去掉視頻水印?分享三種視頻去水印技巧,輕松搞定!

怎么去掉視頻水印?在分享視頻時,我們常常會遇到因為水印而影響觀感的問題,因此,掌握有效的去水印方法顯得尤為重要,隨著技術的進步,現在有多種方法可以幫助我們去除視頻中的水印。 接下來分享三種簡單且有效…

ARKit增加一個盒子

ARKit增加一個盒子 體驗一下ARKit的能力,在室內隨便加點小球,然后在AR中顯示出來。 效果如下圖: 以下為操作流程。 新建項目 新建一個空項目,項目一定要選擇 Augmented Reality App,能夠省很多的事。 之后的 conte…

音視頻5、libavformat-3

8、設置I/O中斷機制 在 demux 時,我們首先需要調用 avformat_open_input() 打開一個輸入,然后循環調用 av_read_frame() 函數來讀取輸入。 我們要注意的是: avformat_open_input() 和 av_read_frame() 都是阻塞函數,如果不能讀取到足夠的數據,那么它們將會一直阻塞…

sql18(Leetcode1633各賽事的用戶注冊率)

代碼: # Write your MySQL query statement belowselect r.contest_id,round(count(u.user_id)/(select count(user_id) from Users)*100,2) as percentage fromRegister as r left joinUsers as u on u.user_idr.user_id group by contest_id order by percen…

JAVA線程池原理詳解

線程池的優點 1、線程是稀缺資源,使用線程池可以減少創建和銷毀線程的次數,每個工作線程都可以重復使用。 2、可以根據系統的承受能力,調整線程池中工作線程的數量,防止因為消耗過多內存導致服務器崩潰。 線程池的創建 public…

這個視頻監控技術,讓你的工作效率提升10倍!

在當今數字時代,視頻監控技術正迅速成為社會安全、商業管理和生產運營的重要支柱。隨著科技的飛速發展,視頻監控不再僅僅是觀察和記錄,而是演變成了一種智能、高效的解決方案。 在這個數字化的時代,視頻監控不僅是一種技術&#x…

Flink-簡介與基礎

Flink-簡介與基礎 一、Flink起源二、Flink數據處理模式1.批處理2.流處理3.Flink流批一體處理 三、Flink架構1.Flink集群2.Flink Program3.JobManager4.TaskManager 四、Flink應用程序五、Flink高級特性1.時間流(Time)和窗口(Window&#xff0…

穿山甲SDK接入收益·android廣告接入·app變現·廣告千展收益·eCPM收益(2023.11)

接入穿山甲SDK的app 全屏文字滾動APP 數獨訓練APP 廣告接入示例: Android 個人開發者如何接入廣告SDK,實現app流量變現 接入穿山甲SDK app示例: android 數獨小游戲 經典數獨休閑益智 2023.11.11 ~ 2023.11.22 app接入上架有一段時間了,接…

移動應用程序管理的內容、原因和方式

移動應用程序管理(MAM)是一個術語,指的是管理應用程序的整個生命周期,包括從設備安裝、更新和卸載應用程序,除了在整個生命周期內管理設備外,MAM 還包括保護應用訪問的數據,以及在設備上發現惡意…

Oracle 數據庫基線安全加固操作

目錄 賬號管理、認證授權 ELK-Oracle-01-01-01 ELK-Oracle-01-01-02 ???????ELK-Oracle-01-01-03 ???????ELK-Oracle-01-01-04 ???????ELK-Oracle-01-01-05 ???????ELK-Oracle-01-01-06 ??????? ELK-Oracle-01-01-07 ??????? …

Lambda 重構面向對象的設計模式

Lambda 重構面向對象的設計模式 策略模式 策略模式包含三部分內容 一個代表某個算法的接口(它是策略模式的接口)。 一個或多個該接口的具體實現,它們代表了算法的多種實現(比如,實體類ConcreteStrategyA或者Concrete…

java集成poi框架

介紹 : Apache POI是Apache軟件基金會的開放源碼函式庫&#xff0c;POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能。 下面簡單介紹一下如何使用該框架&#xff1a; 一&#xff1a;導入依賴 <!-- excel解析依賴--><dependency><groupId&…

17 redis集群方案

1、RedisCluster分布式集群解決方案 為了解決單機內存&#xff0c;并發等瓶頸&#xff0c;可使用此方案解決問題. Redis-cluster是一種服務器Sharding技術&#xff0c;Redis3.0以后版本正式提供支持。 這里的集群是指多主多從&#xff0c;不是一主多從。 2、redis集群的目標…

pair和typedef

文章目錄 一、pair用法1.2、pair的創建和初始化1.3、pair對象的操作1.4、(make_pair)生成新的pair對象1.5、通過tie獲取pair元素值 2、typedef2.1、什么是typedef2.2、typedef用法2.2.1、對于數據類型使用例如&#xff1a;2.2.2、對于指針的使用例如2.2.3、對于結構體的使用 2.…

java springboot測試類虛擬MVC環境 匹配返回值與預期內容是否相同 (JSON數據格式) 版

上文java springboot測試類鑒定虛擬MVC請求 返回內容與預期值是否相同我們講了測試類中 虛擬MVC發送請求 匹配返回內容是否與預期值相同 但是 讓我意外的是 既然沒人罵我 因為我們實際開發 返回的基本都是json數據 字符串的接口場景是少數的 我們在java文件目錄下創建一個 dom…

2023年10月紙巾市場分析(京東天貓淘寶平臺紙巾品類數據采集)

雙十一大促期間&#xff0c;剛需品的紙巾是必囤商品之一。今年雙十一&#xff0c;京東數據顯示&#xff0c;10月23日至29日&#xff0c;清潔紙品成交額同比增長40%&#xff0c;由此也拉動了10月紙巾市場的銷售。 鯨參謀數據顯示&#xff0c;今年10月&#xff0c;京東平臺紙巾市…