歡迎光臨
每天分享高質量文章

資料處理入門乾貨: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.9748.68 ]
  },
"borough":"Manhattan",

 

1. 將資料匯入集合

 

mongoimport可使用系統腳本或命令提示符將文件放入資料庫的集合中。如果集合預先存在於資料庫中,操作將首先丟棄原始集合。

 

mongoimport --DB test --collection restaurants --drop --file ~/ downloads/primer-dataset.json

 

mongoimport命令連接到端口號為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({<>)

 

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 essay-header

 

假設資料集中有另一列名為Name,Name的命令與最大值相關聯。

 

MaxName=df['Names'][df['Births']==df['Births'].max()].values

 

在Pandas中還有許多其他方法,例如 sortgroupbyorderby,它們對於結構化資料的使用很有用。此外,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高級資料分析

點擊上圖瞭解及購買

轉載請聯繫微信:DoctorData

推薦語:本書介紹高級資料分析概念的廣泛基礎,以及最近的資料庫革命,如Neo4j、彈性搜索和MongoDB。本書討論瞭如何實現包括區域性爬取在內的ETL技術,並應用於高頻演算法交易和標的導向的對話系統等領域。還有一些機器學習概念的例子,如半監督學習、深度學習和NLP。本書還涵蓋了重要的傳統資料分析技術,如時間序列和主成分分析等。

赞(0)

分享創造快樂