首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python3.7中运行函数时进行时间序列分析?

如何在Python3.7中运行函数时进行时间序列分析?
EN

Stack Overflow用户
提问于 2021-02-05 19:02:56
回答 1查看 64关注 0票数 0

我有这个:

formulas_count_stats.py:

代码语言:javascript
复制
import pandas as pd
from df_count_stats import df, df1

df = df
df1 = df1

class Data_load_compare_0:
    def __init__(self, df):
        self.df = pd.read_csv(df, delimiter=';')

        '''
        Data information section from df  = basic stats

        '''

    def get_EDA_columns(self):
        return self.df.columns

    def get_EDA_info(self):
        return self.df.info()

    def get_EDA_describe(self):
        return self.df.describe()

    def get_EDA_shape(self):
        return self.df.shape

    def get_EDA_value_counts(self):
        return self.df.value_counts()

    def get_EDA_isnull(self):
        return self.df.isnull()

    def get_EDA_dtypes(self):
        return self.df.dtypes

    def get_EDA_isna(self):
        return self.df.isna()

    def get_EDA_nunique(self):
        return self.df.nunique()

    def get_EDA_sort_dipl(self):
        return self.df.query("col1 == 'X'")

    def get_EDA_sort_bach(self):
        return self.df.query("col1 == 'Y'")

    def get_EDA_sort_by_line(self):
        return self.df.groupby(['col2', 'col1', 'col3']).agg(['count'])# groupby(['User Name', 'col2'])['col1'].size().reset_index(name='counts')

    '''
    Time series
    '''
    import matplotlib.pyplot as plt
    def get_time_series(self):
        df['Logon Time'] = pd.to_datetime(df['Logon Time'], errors='coerce')
        df['Year'] = df.index.dt.year
        df['month'] = df.index.dt.month
        df['day'] = df.inde.dt.day
        df['hour'] = df.index.dt.hour
        df['week'] = df.index.dt.week
        df['count'] = df['User Name']
        return df.groupby([df['Logon Time'].dt.year, df['Logon Time'].dt.month]).sum().plot.bar()
    plt.show()

从main_count_stats.py运行函数的...and (从df_count_stats.py加载数据):

代码语言:javascript
复制
from df_count_stats import df_load, df1_load
from formulas_count_stats import Data_load_compare_0, Data_load_compare_1

myData = Data_load_compare_0(df_load)
myData1 = Data_load_compare_1(df1_load)

EDA_stats_00_0 = myData.get_EDA_columns()
EDA_stats_01_0 = myData.get_EDA_nunique()
EDA_stats_02_0 = myData.get_EDA_shape()
EDA_stats_03_0 = myData.get_EDA_info()
EDA_stats_04_0 = myData.get_EDA_isna()
EDA_stats_05_0 = myData.get_EDA_isnull()
EDA_stats_06_0 = myData.get_EDA_describe()
EDA_stats_07_0 = myData.get_EDA_dtypes()
EDA_stats_08_0 = myData.get_EDA_sort_bach()
EDA_stats_09_0 = myData.get_EDA_sort_dipl()
EDA_stats_10_0 = myData.get_EDA_sort_by_line()
EDA_stats_11_0 = myData.get_time_series()

我得到了这个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:/.../.../main_count_stats.py", line 25, in <module>
    EDA_stats_11_0 = myData.get_time_series()
  File "C:\...\...\...\formulas_count_stats.py", line 59, in get_time_series
    df['Year'] = df.index.dt.year
AttributeError: 'RangeIndex' object has no attribute 'dt'

我希望我将一个简单的时间序列分析集成到一个运行良好的formulas_count_stats.py中的尝试能够奏效。显然,事实并非如此。我确实将索引更改为'to_datetime‘格式。

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2021-02-05 19:20:59

或者,您可以将索引转换为Series并使用.dt

代码语言:javascript
复制
def get_time_series(self):
    self.df['Logon Time'] = pd.to_datetime(df['Logon Time'], errors='coerce')
    self.df[['Year', 'month', 'day', 'hour', 'week']] = (pd.Series(df.index)
                                                .dt.strftime('%Y-%m-%d-%H-%W')
                                                .str.split('-', expand=True).astype(int)).values
    self.df['count'] = df['User Name']
    return self.df.groupby([df['Logon Time'].dt.year, df['Logon Time'].dt.month]).sum().plot.bar()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66062093

复制
相关文章

相似问题

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