我希望这个问题很清楚,但我正在调查Zillow房屋销售数据,并遇到了一个问题,即能够将某些年份的所有月份合并为新申报的";年份";变量这应该基本上桶所有的数据,有1月,2月,3月。。。等等仅YY。
我尝试过Pandas内置的函数,例如Stack((&Pivot((,而这些似乎都不起作用。
如果没有可行的方法,我有什么选择?提前感谢!
示例:取第1列="1996年1月31日">和第2列=<em"1996年2月28日">12/31/1996',并合并为一个新的名为Y1996的列。这将比每月细分更容易分析。
我的代码:
import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
%matplotlib inline
zil = pd.read_csv('zillow.csv')
df_zil = pd.DataFrame(df_zil)
df_zil.head(4)
#My attempt at merging into one
y1996 = (df_zil['1/31/1996'] + df_zil['3/31/1996'] + df_zil['4/30/1996'] + df_zil['5/31/1996'] +
df_zil['6/30/1996'] + df_zil['7/31/1996'] + df_zil['8/31/1996'] + df_zil['9/30/1996'] +
df_zil['10/31/1996'] + df_zil['11/30/1996'] + df_zil['12/31/1996'])
如何通过excel格式化数据的屏幕截图——从第一列开始
Zillow数据参考:https://www.zillow.com/research/data/
我认为你需要一个与枢轴相反的东西——融化。您的数据在";宽";格式,并且如果将数据转换为";"高";总体安排一旦你有了高格式的数据,你就可以使用groupby来汇总同一年内的值。
我下载了房屋库存和销售数据集,并编写了一个简短的程序来总结同一年的所有价值。
代码:
import pandas as pd
df = pd.read_csv("Metro_invt_fs_uc_sfrcondo_smoothed_month.csv")
# Take all of the columns after the index and convert them into additional rows
df = df.melt(id_vars=["RegionID", "SizeRank", "RegionName", "RegionType", "StateName"], var_name="Date")
# Drop date, but keep year
df["Year"] = pd.to_datetime(df["Date"]).dt.year
df = df.drop("Date", axis="columns")
# Aggregate each year
df = df.groupby(["RegionID", "SizeRank", "RegionName", "RegionType", "StateName", "Year"], as_index=False).sum()
print(df)
输出:
RegionID SizeRank RegionName RegionType StateName Year value
0 394304 74 Akron, OH Msa OH 2017 3576.0
1 394304 74 Akron, OH Msa OH 2018 42625.0
2 394304 74 Akron, OH Msa OH 2019 39078.0
3 394304 74 Akron, OH Msa OH 2020 21532.0
4 394308 60 Albany, NY Msa NY 2017 2969.0
.. ... ... ... ... ... ... ...
475 753906 75 North Port-Sarasota-Bradenton, FL Msa FL 2020 73953.0
476 753924 54 Urban Honolulu, HI Msa HI 2017 3735.0
477 753924 54 Urban Honolulu, HI Msa HI 2018 50079.0
478 753924 54 Urban Honolulu, HI Msa HI 2019 57413.0
479 753924 54 Urban Honolulu, HI Msa HI 2020 35522.0
[480 rows x 7 columns]