質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

3回答

2319閲覧

X軸:日時、Y軸:数値の散布図作成時のエラー対処法

shu_magi

総合スコア19

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2018/12/05 09:01

前提・実現したいこと

X軸:日時、y軸:数値の散布図を作成しようとしています。
データはcsvから読み込みます。

データ例
time     data_id y
2018/10/1 10:00 1 1
2018/10/1 10:03 2 1
2018/10/1 10:10 3 1
2018/10/1 10:11 4 2
2018/10/1 10:20 5 2
2018/10/1 10:25 6 3
2018/10/1 10:30 7 4
2018/10/1 10:45 8 5
2018/10/1 10:55 9 5
2018/10/1 11:15 10 6

発生している問題・エラーメッセージ

散布図plt.scatter()を実行すると後述のエラーが発生しました。(データ型のエラー?)
Googleで調べて見ましたが解決策が見つからないため、質問させていただきました。

また、同じデータで折れ線グラフplt.plot()を描写する場合は特にエラーは起きませんでした。

TypeError Traceback (most recent call last) <ipython-input-22-e5d05a1d5120> in <module>() 7 data.describe() 8 ----> 9 plt.scatter(data['time'], data['floor']) 10 plt.xlabel('time') 11 plt.ylabel('floor') ~\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\pyplot.py in scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, hold, data, **kwargs) 3473 vmin=vmin, vmax=vmax, alpha=alpha, 3474 linewidths=linewidths, verts=verts, -> 3475 edgecolors=edgecolors, data=data, **kwargs) 3476 finally: 3477 ax._hold = washold ~\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs) 1865 "the Matplotlib list!)" % (label_namer, func.__name__), 1866 RuntimeWarning, stacklevel=2) -> 1867 return func(ax, *args, **kwargs) 1868 1869 inner.__doc__ = _add_data_doc(inner.__doc__, ~\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\axes\_axes.py in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, **kwargs) 4323 linewidths = rcParams['lines.linewidth'] 4324 -> 4325 offsets = np.column_stack([x, y]) 4326 4327 collection = mcoll.PathCollection( ~\AppData\Local\Continuum\anaconda3\lib\site-packages\numpy\lib\shape_base.py in column_stack(tup) 592 arr = array(arr, copy=False, subok=True, ndmin=2).T 593 arrays.append(arr) --> 594 return _nx.concatenate(arrays, 1) 595 596 def dstack(tup): TypeError: invalid type promotion

該当のソースコード

Python

1import pandas as pd 2import matplotlib.pyplot as plt 3from pandas.plotting import scatter_matrix 4%matplotlib inline 5 6data = pd.read_csv("data_test_graph.csv",dtype="float",parse_dates = ["time"]) 7data.describe() 8 9plt.scatter(data['time'], data['y']) 10plt.xlabel('time') 11plt.ylabel('floor') 12plt.show()

試したこと

同じデータで折れ線グラフの描写を試した場合は特にエラーは起きませんでした。
(上記コードでplt.scatter(data['time'], data['y'])→plt.plot(data['time'], data['y'])の場合)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Python

1data.plot(x='time', y='y', style='.') 2plt.xlabel('time') 3plt.ylabel('floor') 4plt.show()

でどうでしょうか

投稿2018/12/05 10:41

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shu_magi

2018/12/06 08:44

magichanさん ありがとうございます。こちらの方法でもできました!styleで点表示を指定できるんですね。
guest

0

ベストアンサー

Pandas type error trying to plotによると、datetimeの場合はscatterの代わりにplot_dateを使うとよいようです。

Python

1import pandas as pd 2data = pd.DataFrame({'time':['2018/10/1 10:00','2018/10/1 10:11','2018/10/1 10:25'],'y':[1,2,3]}) 3data['time'] = pd.to_datetime(data['time']) 4 5import matplotlib.pyplot as plt 6 7plt.plot_date(data['time'], data['y']) 8plt.xlabel('time') 9plt.ylabel('floor') 10plt.show()

イメージ説明

投稿2018/12/05 10:37

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shu_magi

2018/12/06 08:30

can110さん ありがとうございます。plot_dateで確かに散布図を作成できました! magichanさんの方法でも出来ました。今回は一番早く回答頂いたcan110さんをベストアンサーとさせていただきました。
guest

0

https://qiita.com/ColdFreak/items/1028927c81fdfa5f3ac2
上記のように、タイプを
<class 'pandas.core.series.Series'>
上記から、以下に変更してあげると良いようです。
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>

ただ、時系列データを散布図で見るというのはデータの傾向を眺めるという意味で考えると、散布図にこだわる必要性がないとは思いますが。

投稿2018/12/05 10:41

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shu_magi

2018/12/06 08:55

t_obaraさん 回答ありがとうございます。 time列のタイプはDatetimeになっているようなのですが、更に変換が必要なのでしょうか? data.dtypes で time datetime64[ns] y float64 です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問