数据处理入门干货:MongoDB和pandas极简教程
?
導讀:MongoDB是一個開源文檔數據庫,旨在實現卓越的性能、易用性和自動擴展。Pandas是受R數據框架概念啟發形成的框架。本文的目的是展示一些示例,以便你開始使用MongoDB和Pandas。
作者:薩揚·穆霍帕迪亞(Sayan Mukhopadhyay)
如需轉載請聯系大數據(ID:hzdashuju)
01 Python版本MongoDB
MongoDB是一個開源文檔數據庫,旨在實現卓越的性能、易用性和自動擴展。MongoDB確保不需要對象關系映射(ORM)來促進開發。包含由字段和值對組成的數據結構的文檔在MongoDB中稱為記錄(record)。這些記錄類似于JSON對象。字段的值可以包括其他文檔、數組和文檔數組。
{ "_id":ObjectId("01"), "address": { "street":"Siraj Mondal Lane", "pincode":"743145", "building":"129", "coord": [ -24.97, 48.68 ]}, "borough":"Manhattan",1. 將數據導入集合
mongoimport可使用系統腳本或命令提示符將文檔放入數據庫的集合中。如果集合預先存在于數據庫中,操作將首先丟棄原始集合。
mongoimport --DB test --collection restaurants --drop --file ~/ downloads/primer-dataset.jsonmongoimport命令連接到端口號為27017的本地運行的MongoDB實例。選項?--file?提供了導入數據的方法,此處為?~/downloads/primer-dataset.json。
要將數據導入到運行在不同主機或端口上的MongoDB實例中,需要在?mongoimport?命令中特別指出主機名或端口,用選項?--host?或?--port。
MySQL中有類似的命令load。
2. 使用pymongo創建連接
要創建連接,請執行以下操作:
import MongoClient from pymongo. Client11 = MongoClient()如果MongoClient無參數,那么將默認在端口27017上的本地端口上運行MongoDB實例。
可以指定一個完整的MongoDB URL來定義連接,其中包括主機和端口號。例如,下面的代碼會連接到一個MongoDB實例,該實例運行在?mongodbo.example.net?的27017端口上:
Client11 = MongoClient("mongodb://myhostname:27017")3. 訪問數據庫對象
要將名為primer的數據庫分配給局部變量DB,可以使用以下任意一行代碼:
Db11 = client11.primer db11 = client11['primer']集合對象可以通過字典或數據庫對象屬性進行訪問,如以下兩個示例所示:
Coll11 = db11.dataset coll = db11['dataset']4. 插入數據
你可以將文檔放入目前不存在的集合中,以下操作將創建集合:
result=db.addrss.insert_one({<<your json >>)5. 更新數據
以下是更新數據的方法:
result=db.address.update_one( {"building": "129", {"$set": {"address.street": "MG Road"}} )6. 刪除數據
要從集合中刪除所有文檔,請使用以下命令:
result=db.restaurants.delete_many({})02 Pandas
下面展示一些示例,以便你開始使用Pandas。這些示例取自現實世界的數據,數據上自然會有一些瑕疵。Pandas是受R數據框架概念啟發形成的框架。
要從CSV文件中讀取數據,請使用以下命令:
import pandas as pd broken_df=pd.read_csv('data.csv')要查看前三行,請使用:
broken_df[:3]要選擇列,請使用:
fixed_df['Column Header']要繪制列,請使用:
fixed_df['Column Header'].plot()要獲取數據集中的最大值,請使用以下命令:
MaxValue=df['Births'].max() where Births is the column header假設數據集中有另一列名為Name,Name的命令與最大值相關聯。
MaxName=df['Names'][df['Births']==df['Births'].max()].values在Pandas中還有許多其他方法,例如?sort、groupby?和?orderby,它們對于結構化數據的使用很有用。此外,Pandas還有一個現成的適配器,適用于MongoDB、Google Big Query等流行數據庫。
接下來將展示一個與Pandas相關的復雜示例。在不同列值的X數據框中,查找root列分組的平均值。
for col in X.columns:if col != 'root':avgs = df.groupby([col,'root'], as_index=False)['floor'].aggregate(np.mean)for i,row in avgs.iterrows():k = row[col]v = row['floor']r = row['root']X.loc[(X[col] == k) & (X['root'] == r), col] = v2. 關于作者:Sayan Mukhopadhyay擁有超過13年的行業經驗,并與瑞信、PayPal、CA Technologies、CSC和Mphasis等公司建立了聯系。他對投資銀行、在線支付、在線廣告、IT架構和零售等領域的數據分析應用有著深刻的理解。他的專業領域是在分布式和數據驅動的環境(如實時分析、高頻交易等)中,實現高性能計算。本文摘編自《Python高級數據分析:機器學習、深度學習和NLP實例》,經出版方授權發布。
延伸閱讀《Python高級數據分析》
推薦語:本書介紹高級數據分析概念的廣泛基礎,以及最近的數據庫革命,如Neo4j、彈性搜索和MongoDB。本書討論了如何實現包括局部爬取在內的ETL技術,并應用于高頻算法交易和目標導向的對話系統等領域。還有一些機器學習概念的例子,如半監督學習、深度學習和NLP。本書還涵蓋了重要的傳統數據分析技術,如時間序列和主成分分析等。
總結
以上是生活随笔為你收集整理的数据处理入门干货:MongoDB和pandas极简教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么大厂都在造车?原因找到了
- 下一篇: 8个应用案例告诉你,机器学习都能做什么?