用 Pandas 填充缺失值
Filling in missing values with Pandas
Link: CSV with missing Values
我正在尝试找出用 Pandas 填写 CSV 文件中 'region_cd' 和 'model_cd' 字段的最佳方法。 'RevenueProduced' 字段可以告诉您任何缺失字段的正确值是什么。我的想法是在我的数据框中进行一些查询,查找具有相同 'region_cd' 和 'RevenueProduced' 的所有字段,并使所有 'model_cd' 匹配(反之亦然,缺少 'region_cd').
import pandas as pd
import requests as r
#variables needed for ease of file access
url = 'http://drd.ba.ttu.edu/isqs3358/hw/hw2/'
file_1 = 'powergeneration.csv'
res = r.get(url + file_1)
res.status_code
df = pd.read_csv(io.StringIO(res.text), delimiter=',')
可能有很多方法可以解决这个问题,但我才刚刚开始 Pandas,至少我很难说。任何帮助都会很棒。
假设每个 RevenueProduced
映射到一个 region_cd
和一个 model_cd
。
看看 groupby
pandas 函数。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html
您可以执行以下操作:
# create mask to grab only regions with values
mask = df['region_cd'].notna()
# group by region, collect the first `RevenueProduced` and reset the index
region_df = df[mask].groupby('RevenueProduced')["region_cd"].first().reset_index()
# checkout the built-in zip function to understand what's happening here
region_map = dict(zip(region_df.RevenueProduced, region_df.region_cd))
# store data in new column, although you could overwrite "region_cd"
df.loc[:, 'region_cd_NEW'] = df["RevenueProduced"].map(region_map)
您将使用 model_cd
执行完全相同的过程。我没有 运行 此代码,因为在撰写本文时我无法访问您的 csv,但我希望这会有所帮助。
这里是.map
系列方法的文档。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html
(请记住,系列只是数据框中的一列)
Link: CSV with missing Values
我正在尝试找出用 Pandas 填写 CSV 文件中 'region_cd' 和 'model_cd' 字段的最佳方法。 'RevenueProduced' 字段可以告诉您任何缺失字段的正确值是什么。我的想法是在我的数据框中进行一些查询,查找具有相同 'region_cd' 和 'RevenueProduced' 的所有字段,并使所有 'model_cd' 匹配(反之亦然,缺少 'region_cd').
import pandas as pd
import requests as r
#variables needed for ease of file access
url = 'http://drd.ba.ttu.edu/isqs3358/hw/hw2/'
file_1 = 'powergeneration.csv'
res = r.get(url + file_1)
res.status_code
df = pd.read_csv(io.StringIO(res.text), delimiter=',')
可能有很多方法可以解决这个问题,但我才刚刚开始 Pandas,至少我很难说。任何帮助都会很棒。
假设每个 RevenueProduced
映射到一个 region_cd
和一个 model_cd
。
看看 groupby
pandas 函数。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html
您可以执行以下操作:
# create mask to grab only regions with values
mask = df['region_cd'].notna()
# group by region, collect the first `RevenueProduced` and reset the index
region_df = df[mask].groupby('RevenueProduced')["region_cd"].first().reset_index()
# checkout the built-in zip function to understand what's happening here
region_map = dict(zip(region_df.RevenueProduced, region_df.region_cd))
# store data in new column, although you could overwrite "region_cd"
df.loc[:, 'region_cd_NEW'] = df["RevenueProduced"].map(region_map)
您将使用 model_cd
执行完全相同的过程。我没有 运行 此代码,因为在撰写本文时我无法访问您的 csv,但我希望这会有所帮助。
这里是.map
系列方法的文档。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html
(请记住,系列只是数据框中的一列)