我正在分析一个公开的数据集:为了税收目的对旧金山的房产进行评估(https://data.sfgov.org/Housing-and-Buildings/Historic-Secured-Property-Tax-Rolls/wv5m-vpq2)。它可以作为CSV file下载,它假定文件名为“Historic_Secured_Property_Tax_Rolls.csv”。
使用这个文件,我试图找出土地价值的年增长率,不包括零值。数据集非常大,如果我尝试绘制它就会出错,所以我首先要依靠我对polyfit
如何工作的理解。
我使用以下代码推导出“土地价值”列的自然对数与“会计年度”列的线性拟合:
import pandas as pd
# Read in data downloaded from https://data.sfgov.org/api/views/wv5m-vpq2/rows.csv?accessType=DOWNLOAD
df = pd.read_csv('Historic_Secured_Property_Tax_Rolls.csv')
df_nz = df[df['Closed Roll Assessed Land Value'] > 0] # Only consider non-zero Land Values
p = np.polyfit(df_nz['Closed Roll Fiscal Year'], np.log(df_nz['Closed Roll Assessed Land Value']), 1)
这会为p
生成以下值:
In [42]: p
Out[42]: array([ 4.18802559e-02, -7.23804441e+01])
据我了解,线性拟合的斜率应由p[1]
表示。然而,这将是每年-724%的难以置信的增长率。然而,如果它是p[0]
,则每年4.2%更合理。
我想知道我是否在某种程度上误解了结果,以及增长率是否以某种方式由p[0]
代替p[1]
?
答案 0 :(得分:4)
Returns
-------
p : ndarray, shape (M,) or (M, K)
Polynomial coefficients, highest power first. If `y` was 2-D, the
coefficients for `k`-th data set are in ``p[:,k]``.
这告诉我4.2%
是对数项的系数。
我的第一反应是看平均值,中位数等的增长率
columns = ['Closed Roll Fiscal Year', 'Closed Roll Assessed Land Value']
df_ = df[columns].copy()
df_.columns = ['Year', 'Value']
df_ = df_[df_.iloc[:, 1] > 0]
df_['log_value'] = np.log(df_.Value)
df_desc = df_.groupby('Year').log_value.describe()
desc_cols = ['mean', '25%', '50%', '75%']
df_desc.unstack()[desc_cols].plot()
只是一个想法。