

1.時間のフォーマットを変更したいですが、

[code]

    df['datetime'] = pd.to_datetime(df['datetime'],format='%Y年%m月%d日 %H時%M分')
    
[/code]

うまくいかないんです。  
正しい書き方は何ですか。

2.散布図の作り方、

[code]

    plt.plot_date(datetime, temp)
    
[/code]

うまくいかないんです。  
正しい書き方は何ですか。  
よろしくお願いします。

[![画像の説明をここに入力](https://i.stack.imgur.com/p90I3.jpg)](https://i.stack.imgur.com/p90I3.jpg)


CC BY-SA 4.0
2023-03-17T07:38:09.097
94220
2023-03-18T06:32:20.847
2023-03-18T06:32:20.847
3060
56371
question
python pandas
時系列のフォーマットを変更と描画


`datetime` 項目が既に日時データである場合  
@kunif 氏がコメントで記しているように `dt` アクセサで変換可能  
(ちなみに `pd.to_datetime(STRING, formt='')` は文字列を日時データに変換する方法)

[code]

    import pandas as pd
    import numpy as np
    rng = pd.date_range(start="2023-3-20", periods=40, freq="30min")
    df = pd.DataFrame({
        'datetime': rng,
        'temp': np.random.randn(40),
    })
    df['日時'] = df.datetime.dt.strftime('%Y年%m月%d日 %H時%M分')   # 日時データを文字列へ変換
    
    print(df.dtypes)
    # datetime    datetime64[ns]
    # temp               float64
    # 日時                object
    # dtype: object
    
[/code]

* * *

plotの場合, 日時データを扱うなら文字列ではなく `datetime64`が望ましいでしょう  
(以下は colabでの表示の場合)

[code]

    # !pip install japanize-matplotlib
    import japanize_matplotlib 
    import matplotlib.pyplot as plt
    
    df.loc[len(df)] = [pd.Timestamp('2023-3-21'), 3]
    df['日時'] = df.datetime.dt.strftime('%Y年%m月%d日 %H時%M分')
    
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    plt.plot_date(df['datetime'], df['temp'], fmt='o', xdate=True)
    plt.gcf().autofmt_xdate()
    plt.show()
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/NbWke.png)](https://i.stack.imgur.com/NbWke.png)


CC BY-SA 4.0
2023-03-17T08:36:01.687
94222
2023-03-17T08:36:01.687
43025
94220
answer