gpt4 book ai didi

python - 线性拟合 pandas.datetime64 值?

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:19 24 4
gpt4 key购买 nike

我有一个包含两列(年龄、日期)的数据框,指示一个人的年龄和当前日期。我想根据该数据估算出生日期。我想拟合一个线性模型并找到截距,但它不是开箱即用的。 Pandas 不再支持 ols() 函数。

import pandas as pd
import seaborn as sns
from pandas import Timestamp

age = [30, 31, 31, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, 34]
date = [Timestamp('2001-02-10 00:01:00'),
Timestamp('2001-11-12 00:01:00'),
Timestamp('2002-02-27 00:01:00'),
Timestamp('2002-07-05 00:01:00'),
Timestamp('2002-07-20 00:01:00'),
Timestamp('2002-08-15 00:01:00'),
Timestamp('2002-09-08 00:01:00'),
Timestamp('2002-10-15 00:01:00'),
Timestamp('2002-12-21 00:01:00'),
Timestamp('2003-04-04 00:01:00'),
Timestamp('2003-07-29 00:01:00'),
Timestamp('2003-08-11 00:01:00'),
Timestamp('2004-02-28 00:01:00'),
Timestamp('2005-01-11 00:01:00'),
Timestamp('2005-01-12 00:01:00')]

df = pd.DataFrame({'age': age, 'date': date})

sns.regplot(df.age, df.date)

抛出错误:

TypeError: reduction operation 'mean' not allowed for this dtype

将数据转换为可以拟合的数据并将其转换回日期并估计置信区间的最佳方法是什么?是否有任何包可以开箱即用地处理 pandas.Timestamps?例如。 scikit-学习?

最佳答案

使用 pd.to_numeric 转换为 unix 时间,在本例中为自 1970-01-01 以来的纳秒数。

import pandas as pd

df['date'] = pd.to_numeric(df.date)
sns.regplot(df.age, df.date)

enter image description here

然后您可以使用 pd.to_datetime() 轻松地将其转换回日期。


示例:这是一个简单的线性拟合

import numpy as np
df['date'] = pd.to_numeric(df.date)
fit = np.polyfit(df.age, df.date, 1)

# Here's the predicted Birthday in unix time
np.polyval(fit, 0)
#4.966460634146548e+16

# Here's the same result transformed to a date.
pd.to_datetime(np.polyval(fit,0))
#Timestamp('1971-07-29 19:43:26.341465480')

关于python - 线性拟合 pandas.datetime64 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50979873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com