

pythonとcsvファイルを用いて3次元グラフを作りたいです。

画像のようなCSVファイルを用いて三次元グラフを作ることを目標としています。（エクセルで開いているのでコンマの位置でセル分けされています。）  
pos=768,列はAMKまで存在しています。  
この画像中の9行目がx軸、A列がy軸に該当し、中のデータがz軸で表現される量に該当します。  
[![csvファイル](https://i.stack.imgur.com/w7ZAV.png)](https://i.stack.imgur.com/w7ZAV.png)

また描画するｃｓｖファイルの選択はパスを入力したいと考えています。

以上の事を考え、過去の質問などを参考に以下のようなコードを書いて試しました。

[code]

    import pandas as pd
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import numpy as np
    
    
    
    # CSVからデータを読み込む#  CSV読み込み
    # CSVのパスを取得
    filepath = input(r"ファイルのPathを入力してください：（例）C:\User\Desktop\data.csv")
    data = pd.read_csv(filepath , header=8 , index_col=0)
    
    print(data)
    print(data.index)
    print(data.columns)
    
    # 3Dグラフの初期化
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    
    # データの準備
    Xgrid = data.columns
    Ygrid = data.index
    X, Y = np.meshgrid(Xgrid, Ygrid)
    Z = data.as_matrix()
    
    # プロット
    surf = ax.plot_surface(X, Y, Z)
    
    # 表示
    plt.show()
    
[/code]

すると以下のようなエラーメッセージが表示されました。  
しかし、具体的に何を指摘されていて、何をどう直せばいいかわからないため教えていただきたいです。  
どのようにすればグラフを作れるのでしょうか。

[code]

    Warning (from warnings module):
      File "C:/Users/pierrot/Desktop/csv加工.py", line 19
        ax = fig.gca(projection='3d')
    MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4. Starting two minor releases later, gca() will take no keyword arguments. The gca() function should only be used to get the current axes, or if no axes exist, create new axes with default keyword arguments. To create a new axes with non-default arguments, use plt.axes() or plt.subplot().
    Traceback (most recent call last):
      File "C:/Users/pierrot/Desktop/csv加工.py", line 25, in <module>
        Z = data.as_matrix()
      File "C:\Users\pierrot\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\generic.py", line 5487, in __getattr__
        return object.__getattribute__(self, name)
    AttributeError: 'DataFrame' object has no attribute 'as_matrix'
    >>> 
    
[/code]


CC BY-SA 4.0
2021-09-02T07:35:17.317
82179
2022-06-19T10:05:55.667
48018
question
python pandas numpy csv matplotlib
pythonとcsvファイルを使って3次元グラフを作りたい


エラー内容の注目すべき点は

[code]

      File "C:/Users/pierrot/Desktop/csv加工.py", line 19
      ax = fig.gca(projection='3d')
    
[/code]

> MatplotlibDeprecationWarning: Calling gca() with keyword arguments was
> deprecated in Matplotlib 3.4. Starting two minor releases later, gca() will
> take no keyword arguments. The gca() function should only be used to get the
> current axes, or if no axes exist, create new axes with default keyword
> arguments. To create a new axes with non-default arguments, use plt.axes()
> or plt.subplot().

ここと

[code]

      File "C:/Users/pierrot/Desktop/csv加工.py", line 25, in <module>
      Z = data.as_matrix()
    
    AttributeError: 'DataFrame' object has no attribute 'as_matrix'
    
[/code]

ここ

### メッセージ内容

最初のは, 発生箇所は行 19: `fig.gca(projection='3d')`

「キーワード引数を使用した gca() の呼び出しは、Matplotlib 3.4 で非推奨になりました。」  
(ここで言うところのキーワード引数は `projection='3d'`)  
「(〜中略〜) `plt.axes()` or `plt.subplot()` を使用して下さい」

次の内容は, 発生箇所 行 25: `data.as_matrix()`

「'DataFrame' オブジェクトには 'as_matrix' attribute (属性)はありません」  
(ここで言うところの 'DataFrame' オブジェクトとは, `pd.read_csv()`で作った, `data` に入ってるオブジェクトのこと)

### 対処

[code]

    ax = fig.gca(projection='3d')
    
[/code]

[code]

    ax = fig.add_subplot(projection='3d')
    
[/code]

コメントの反応にもあるように `as_matrix`で検索すれば「`DataFrame.values`使え」と書いてあるページが見つかります

[code]

    Z = data.as_matrix()
    
[/code]

[code]

    Z = data.values
    
[/code]

参考: <https://pandas.pydata.org/pandas-
docs/version/0.23/generated/pandas.DataFrame.values.html>


CC BY-SA 4.0
2021-09-02T11:23:08.280
82184
2021-09-02T11:23:08.280
43025
82179
answer