時系列-データ処理と視覚化
時系列は、等間隔の時間間隔でインデックス付けされた一連の観測値です。したがって、順序と連続性はどの時系列でも維持する必要があります。
使用するデータセットは、ひどく汚染されたイタリアの都市の大気質について、約1年間の1時間ごとのデータを持つ多変量時系列です。データセットは以下のリンクからダウンロードできます-https://archive.ics.uci.edu/ml/datasets/air+quality。
次のことを確認する必要があります-
時系列は等間隔であり、
冗長な値やギャップはありません。
時系列が連続していない場合は、アップサンプリングまたはダウンサンプリングできます。
df.head()を表示しています
[122]で:
import pandas 
    [123]で:
df = pandas.read_csv("AirQualityUCI.csv", sep = ";", decimal = ",")
df = df.iloc[ : , 0:14] 
    [124]で:
len(df) 
    アウト[124]:
9471 
    [125]で:
df.head() 
    アウト[125]:
                時系列を前処理するために、データセットにNaN(NULL)値がないことを確認します。存在する場合は、0または平均、あるいは先行または後続の値に置き換えることができます。時系列の連続性が維持されるように、ドロップするよりも交換することをお勧めします。ただし、データセットでは、最後のいくつかの値はNULLのように見えるため、削除しても連続性には影響しません。
NaN(Not-a-Number)の削除
[126]で:
df.isna().sum()
Out[126]:
Date             114
Time             114
CO(GT)           114
PT08.S1(CO)      114
NMHC(GT)         114
C6H6(GT)         114
PT08.S2(NMHC)    114
NOx(GT)          114
PT08.S3(NOx)     114
NO2(GT)          114
PT08.S4(NO2)     114
PT08.S5(O3)      114
T                114
RH               114
dtype: int64 
    [127]で:
df = df[df['Date'].notnull()] 
    [128]で:
df.isna().sum() 
    アウト[128]:
Date             0
Time             0
CO(GT)           0
PT08.S1(CO)      0
NMHC(GT)         0
C6H6(GT)         0
PT08.S2(NMHC)    0
NOx(GT)          0
PT08.S3(NOx)     0
NO2(GT)          0
PT08.S4(NO2)     0
PT08.S5(O3)      0
T                0
RH               0
dtype: int64 
    時系列は通常、時間に対する折れ線グラフとしてプロットされます。そのために、日付と時刻の列を組み合わせて、文字列から日時オブジェクトに変換します。これは、日時ライブラリを使用して実行できます。
日時オブジェクトへの変換
[129]で:
df['DateTime'] = (df.Date) + ' ' + (df.Time)
print (type(df.DateTime[0])) 
    <class 'str'>
[130]で:
import datetime
df.DateTime = df.DateTime.apply(lambda x: datetime.datetime.strptime(x, '%d/%m/%Y %H.%M.%S'))
print (type(df.DateTime[0])) 
    <クラス 'pandas._libs.tslibs.timestamps.Timestamp'>
温度のようないくつかの変数が時間の変化とともにどのように変化するかを見てみましょう。
プロットを表示
[131]で:
df.index = df.DateTime 
    [132]で:
import matplotlib.pyplot as plt
plt.plot(df['T']) 
    アウト[132]:
[<matplotlib.lines.Line2D at 0x1eaad67f780>] 
    
                
                [208]で:
plt.plot(df['C6H6(GT)']) 
    アウト[208]:
[<matplotlib.lines.Line2D at 0x1eaaeedff28>] 
    箱ひげ図は、データセットに関する多くの情報を1つのグラフにまとめることができるもう1つの便利な種類のグラフです。これは、1つまたは複数の変数の平均、25%および75%の四分位数、および外れ値を示しています。外れ値の数が少なく、平均から非常に離れている場合は、平均値または75%の四分位値に設定することで外れ値を排除できます。
箱ひげ図の表示
[134]で:
plt.boxplot(df[['T','C6H6(GT)']].values) 
    アウト[134]:
{'whiskers': [<matplotlib.lines.Line2D at 0x1eaac16de80>,
   <matplotlib.lines.Line2D at 0x1eaac16d908>,
   <matplotlib.lines.Line2D at 0x1eaac177a58>,
   <matplotlib.lines.Line2D at 0x1eaac177cf8>],
   'caps': [<matplotlib.lines.Line2D at 0x1eaac16d2b0>,
   <matplotlib.lines.Line2D at 0x1eaac16d588>,
   <matplotlib.lines.Line2D at 0x1eaac1a69e8>,
   <matplotlib.lines.Line2D at 0x1eaac1a64a8>],
   'boxes': [<matplotlib.lines.Line2D at 0x1eaac16dc50>,
   <matplotlib.lines.Line2D at 0x1eaac1779b0>],
   'medians': [<matplotlib.lines.Line2D at 0x1eaac16d4a8>,
   <matplotlib.lines.Line2D at 0x1eaac1a6c50>],
   'fliers': [<matplotlib.lines.Line2D at 0x1eaac177dd8>,
   <matplotlib.lines.Line2D at 0x1eaac1a6c18>],'means': []
}