如何将python数据框架定制为mongodb对象

2024-09-29 00:18:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python导入了一个csv数据集,并进行了一些清理。 Download the dataset here

# importing pandas
import pandas as pd

# reading csv and assigning to 'data'
data = pd.read_csv('co-emissions-per-capita.csv')

# dropping all columns before 2016 (2016 - 2017 remains)
data.drop(data[data.Year < 2016].index, inplace=True)

# dropping rows with all null values in rows
data.dropna(how="all", inplace=True)

# dropping rows with all null values in columns
data.dropna(axis="columns", how="all", inplace=True)

# filling NA values
data["Entity"].fillna("No Country", inplace=True)
data["Code"].fillna("No Code", inplace=True)
data["Year"].fillna("No Year", inplace=True)
data["Per capita CO2 emissions (tonnes per capita)"].fillna(0, inplace=True)

# Sort by Year && Country
data.sort_values(["Year", "Entity"], inplace=True)

# renaming columns
data.rename(columns={"Entity": "Country",
                     "Per capita CO2 emissions (tonnes per capita)": "CO2 emissions (metric tons)"}, inplace=True)

我的currencnt数据集有两年的数据和197个国家的数据,共394行 AFTER THE CLEANUP 我想以以下格式将数据插入mongodb

{
    {
        "_id": ObjectId("5dfasdc2f7c4b0174c5d01bc"),
        "year": 2016,
        "countries":
        {
            "name": "Afghanistan",
            "code": "AFG",
            "CO2 emissions (metric tons)": 0.366302
        },
        {
            "name": "Albania",
            "code": "ALB",
            "CO2 emissions (metric tons)": 0.366302
        }
    },
    {
        "_id": ObjectId("5dfasdc2f7c4b0174c5d01bc"),
        "year": 2017,
        "countries":
        {
            "name": "Afghanistan",
            "code": "AFG",
            "CO2 emissions (metric tons)": 0.366302
        },
        {
            "name": "Albania",
            "code": "ALB",
            "CO2 emissions (metric tons)": 0.366302
        }
    }
}

我要一年一件。 在里面,我想嵌套所有的国家和it相关的信息。 确切地说,我希望我的数据库在每个主对象中有2个(最多)对象和197个嵌套对象。因此,每年仅在数据库中列出一次,而每个国家将在数据库中出现两次,每次1年 是否有更好的结构来存储这些数据?请指定将这些数据存储到mongodb中的步骤,如果您能推荐一个好的“NodeJs mongoose”,比如python的ODM驱动程序,我将不胜感激


Tags: columnscsv数据truedataallmetricyear