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

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

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

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

Python 3.x

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

pandas

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

Q&A

0回答

3937閲覧

時系列データをグラフにプロットするときのエラー

退会済みユーザー

退会済みユーザー

総合スコア0

Jupyter

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

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2018/08/12 12:02

編集2022/01/12 10:55

前提・実現したいこと

あるデータセットから横軸が日時で、縦軸が数値のグラフを描画しようとしています。
データセットの例はこのようになっています。
csv形式で読み込んだ時には、どちらもobject型になっておりました。

データセットに読み込むところのコード

#read csv import pandas as pd pd.set_option('display.max_columns', 8) df = pd.read_csv("sample.csv" , encoding='cp932', header=None)

他に日本語のデータも含まれており、文字化けを防ぐためにこのencodingにしてあります。

2017/1/1 8645
2017/1/2 9600
2017/1/3 0193
2017/1/4 0100
2017/1/5 8093
2017/1/6 0195

以下のようにしてobject型をdatetime64[ns]型にすることはできました。

python

1df[0] = pd.to_datetime(df[0])

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

①まず、縦軸の数値のデータセットをobject型からint型に変換する時に以下のエラーが起こって、変換ができていません。

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-47-b8e01bf2393d> in <module>() 1 #objectをint型に ----> 2 df[4] = df[1].astype(int) ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs) 89 else: 90 kwargs[new_arg_name] = new_arg_value ---> 91 return func(*args, **kwargs) 92 return wrapper 93 return _deprecate_kwarg ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/pandas/core/generic.py in astype(self, dtype, copy, errors, **kwargs) 3408 # else, only a single dtype is given 3409 new_data = self._data.astype(dtype=dtype, copy=copy, errors=errors, -> 3410 **kwargs) 3411 return self._constructor(new_data).__finalize__(self) 3412 ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/pandas/core/internals.py in astype(self, dtype, **kwargs) 3222 3223 def astype(self, dtype, **kwargs): -> 3224 return self.apply('astype', dtype=dtype, **kwargs) 3225 3226 def convert(self, **kwargs): ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/pandas/core/internals.py in apply(self, f, axes, filter, do_integrity_check, consolidate, **kwargs) 3089 3090 kwargs['mgr'] = self -> 3091 applied = getattr(b, f)(**kwargs) 3092 result_blocks = _extend_blocks(applied, result_blocks) 3093 ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/pandas/core/internals.py in astype(self, dtype, copy, errors, values, **kwargs) 469 def astype(self, dtype, copy=False, errors='raise', values=None, **kwargs): 470 return self._astype(dtype, copy=copy, errors=errors, values=values, --> 471 **kwargs) 472 473 def _astype(self, dtype, copy=False, errors='raise', values=None, ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/pandas/core/internals.py in _astype(self, dtype, copy, errors, values, klass, mgr, raise_on_error, **kwargs) 519 520 # _astype_nansafe works fine with 1-d only --> 521 values = astype_nansafe(values.ravel(), dtype, copy=True) 522 values = values.reshape(self.shape) 523 ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/pandas/core/dtypes/cast.py in astype_nansafe(arr, dtype, copy) 623 elif arr.dtype == np.object_ and np.issubdtype(dtype.type, np.integer): 624 # work around NumPy brokenness, #1987 --> 625 return lib.astype_intsafe(arr.ravel(), dtype).reshape(arr.shape) 626 627 if dtype.name in ("datetime64", "timedelta64"): pandas/_libs/lib.pyx in pandas._libs.lib.astype_intsafe() pandas/_libs/src/util.pxd in util.set_value_at_unsafe() ValueError: invalid literal for int() with base 10: ' '

②int型になっている他のカラムとdatetime64[ns]型の時系列データを描画しようとしたところ、以下のエラーが出てしまいました。

--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-35-9ffca3834b6d> in <module>() 2 x= df[1] 3 y = df[13] ----> 4 plt.scatter(x, y) 5 show() ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/matplotlib/pyplot.py in scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, hold, data, **kwargs) 3355 vmin=vmin, vmax=vmax, alpha=alpha, 3356 linewidths=linewidths, verts=verts, -> 3357 edgecolors=edgecolors, data=data, **kwargs) 3358 finally: 3359 ax._hold = washold ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/matplotlib/__init__.py in inner(ax, *args, **kwargs) 1708 warnings.warn(msg % (label_namer, func.__name__), 1709 RuntimeWarning, stacklevel=2) -> 1710 return func(ax, *args, **kwargs) 1711 pre_doc = inner.__doc__ 1712 if pre_doc is None: ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/matplotlib/axes/_axes.py in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, **kwargs) 4085 linewidths = rcParams['lines.linewidth'] 4086 -> 4087 offsets = np.column_stack([x, y]) 4088 4089 collection = mcoll.PathCollection( ~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/numpy/lib/shape_base.py in column_stack(tup) 351 arr = array(arr, copy=False, subok=True, ndmin=2).T 352 arrays.append(arr) --> 353 return _nx.concatenate(arrays, 1) 354 355 def dstack(tup): TypeError: invalid type promotion

該当のソースコード

import pandas as pd #objectをint型に df[2]= df[2].astype(int)

python

1import matplotlib.pyplot as plt 2import numpy as np 3x= df[1] #datetime64[ns]型の時系列データ 4y = df[13] #int型 5plt.scatter(x, y) 6show()

試したこと

以下はデータセットではなく、配列にしてありますが、
簡易版ではエラーが起きることなくプロットすることができました。

python

1import pandas as pd 2import matplotlib.pyplot as plt 3import numpy as np 4from pylab import * 5from pylab import rcParams 6 7df_1 = ['2017-01-01', '2017-01-02', '2017-01-03'] 8df_2 = {'000', '010', '011'} 9df_1 = [pd.to_datetime(s) for s in df_1] 10df_2 = [int(s) for s in df_2] 11 12 13x= df_1 14y = df_2 15 16plt.scatter(x, y) 17show()

補足情報(FW/ツールのバージョンなど)

Python 3.6.0 :: Anaconda 4.3.0

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

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

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

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

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

hayataka2049

2018/08/12 12:12

この質問内容であれば、データセット本体のサンプル(csv等であれば)とコード全文を載せることが望ましいです。回答者が状況を再現できるだけの情報を掲載してください
y_waiwai

2018/08/12 15:03

その縦軸のデータセットというのはどういうデータ形式なんでしょうか。そして、なぜobjectなんでしょうか
退会済みユーザー

退会済みユーザー

2018/08/12 15:15

ご質問いただきましてありがとうございます。csv形式のデータセットで、数値もobjectになっていたため、データセット本体のサンプルが再現できない状態にあります。
y_waiwai

2018/08/12 15:19

csv形式のデータセット、というのは意味不明です。csvファイルをデータセットに読み込むところのコードを提示してください
退会済みユーザー

退会済みユーザー

2018/08/12 22:22

コメントいただきましてありがとうございます。質問内容を編集させていただきました、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問