首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X轴趋势线的求法及斜率计算

X轴趋势线的求法及斜率计算
EN

Stack Overflow用户
提问于 2019-09-14 13:27:04
回答 2查看 3.6K关注 0票数 3

我有一只熊猫数据图,如下所示:

代码语言:javascript
复制
 UNDERLAY   TIME
 27,395     09:15:18
 27,466     09:17:19
 27,391     09:19:06
 27,409     09:21:19
 27,439     09:23:21
 27,468     09:25:58
 27,497     09:27:19
 27,502     09:29:54
 27,542     09:31:19
 27,522     09:33:33
 27,520     09:35:09
 ...

我想绘制这些UNDERLAY值的趋势线,用X轴计算斜率。

从下面的链接得到一些帮助,但是找不到斜率:How can I draw scatter trend line on matplot? Python-Pandas

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-14 14:56:07

seanborn.regplot是制作情节的最快方法:

代码语言:javascript
复制
import seaborn as sns

df_plot = pd.DataFrame()
# seconds since midnight of each TIME value
df_plot['SECONDS'] = (pd.to_datetime(df['TIME']) - pd.Timestamp.now().normalize()).dt.total_seconds()
df_plot['UNDERLAY'] = pd.to_numeric(df['UNDERLAY'].str.replace(',', ''))

ax = sns.regplot(data=df_plot, x='SECONDS', y='UNDERLAY')
ax.set(
    xticklabels=pd.to_datetime(ax.get_xticks(), unit='s').strftime('%H:%M'),
    xlabel='Time',
    ylabel='Underlay'
)
plt.show()

输出:

要获得回归函数,请使用numpy:

代码语言:javascript
复制
import numpy as np
f = np.polyfit(df_plot['SECONDS'], df_plot['UNDERLAY'], deg=1)

# Slope
f[0]

# Make a prediction at 21:00
# Time is expressed as seconds since midnight
np.polyval(f, 21*3600)
票数 6
EN

Stack Overflow用户

发布于 2022-09-06 16:16:54

基于@Code Different的示例,下面是一个完全工作的解决方案:

代码语言:javascript
复制
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

data = [
      ['UNDERLAY', 'TIME']
    , [27395     , '09:15:18']
    , [27466     , '09:17:19']
    , [27391     , '09:19:06']
    , [27409     , '09:21:19']
    , [27439     , '09:23:21']
    , [27468     , '09:25:58']
    , [27497     , '09:27:19']
    , [27502     , '09:29:54']
    , [27542     , '09:31:19']
    , [27522     , '09:33:33']
    , [27520     , '09:35:09']
]
df = pd.DataFrame(data[1:], columns=data[0])
df['TIME'] = pd.to_datetime(df['TIME'])

df_plot = pd.DataFrame()
# seconds since midnight of each TIME value
df_plot['SECONDS'] = (df['TIME'] - pd.Timestamp.now().normalize()).dt.total_seconds()
df_plot['UNDERLAY'] = pd.to_numeric(df['UNDERLAY'])

ax = sns.regplot(data=df_plot, x='SECONDS', y='UNDERLAY')
ax.set(
    xticklabels=pd.to_datetime(ax.get_xticks(), unit='s').strftime('%H:%M'),
    xlabel='Time',
    ylabel='Underlay'
)
plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57935956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档