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

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

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

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

Q&A

解決済

1回答

1305閲覧

ISO8601形式を読み込む方法

rikuj

総合スコア1

Python

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

0グッド

0クリップ

投稿2020/06/27 16:58

編集2020/06/27 17:01

時系列データファイルを読み込んでグラフ化しようとしています。

ISO8601形式(例:2020-06-28T00:30:45.950)で書かれたタイプスタンプを読み取り、グラフ化しようとしていますが、うまくいきません。

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

DATE Value
2020-06-21T14:35:00.000 55.111
2020-06-21T14:35:00.500 55.888
2020-06-21T14:35:00.100 54.988
.
.
.

の様なファイル(hoge1.txt)を読み込んで、横軸に時間、縦軸に値を書きたいのですが、うまくいきません。

試したこと

import numpy as np
import matplotlib as mpl
import matpltlib.pyplot as plt

Read the data (txt format)
tr = np.loadtxt("./hoge1.txt", skiprows=1)
t = tr[:,0]
tr_value = tr[:,1]

と書いてみましたが、
could not convert string to float '2020-06-21T14:35:00.000'
とエラーが出てしまいます。
文字列を読み込んでくれる方法はあるでしょうか。

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

ubuntu18.04LTS, python3.6.9

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

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

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

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

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

guest

回答1

0

ベストアンサー

numpy でもできないことはないですが、数値以外のデータが混じっている CSV ファイルの読み込みは pandas を使ったほうが簡単です。

pandas を使う場合

python

1import pandas as pd 2 3df = pd.read_csv("sample.csv", parse_dates=[0]) 4# parse_dates=[0] は1列目を datetime 型として解釈するということ 5print(df)

numpy を使う場合

Structured arrays として読み込むため、dtype に列名と型の指定が必要になります。

dtype={"names": ("Date", "Value"), "formats": ("datetime64[us]", "float")

python

1import numpy as np 2 3 4data = np.loadtxt( 5 "sample.csv", 6 delimiter=",", 7 skiprows=1, 8 dtype={"names": ("Date", "Value"), "formats": ("datetime64[us]", "float"),}, 9) 10print(data) 11print(data.dtype) 12# [('2020-06-21T14:35:00.000000', 55.111) 13# ('2020-06-21T14:35:00.500000', 55.888) 14# ('2020-06-21T14:35:00.100000', 54.988)] 15# [('Date', '<M8[us]'), ('Value', '<f8')] 16 17# 列のアクセス 18print(data["Date"]) 19print(data["Value"])

投稿2020/06/27 17:45

編集2020/06/27 17:55
tiitoi

総合スコア21956

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

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

rikuj

2020/06/30 03:41

ありがとうございました。
tiitoi

2020/06/30 06:19

解決済みであれば、お手数ですが質問をクローズしてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問