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

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

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

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

Python

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

Q&A

解決済

2回答

2666閲覧

pythonでtsvをグラフ化する方法

nishina5

総合スコア19

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2019/02/08 07:26

編集2019/02/08 08:13

python初心者で恐縮です。

pythonで抽出データをtsvに出力するところまではできたのですが、そのデータを加工してグラフ化する方法がわからず困っております。

・抽出データ:Etherscan APIから抽出したコントラクトアドレスのトランザクション履歴
・データ項目:from,to,value,datetime
・表現したいグラフ:from・valueの日別推移
・加工したい内容:
①fromは個数の合計、valueは数値の合計で算出
②fromは重複削除した上で算出

また、現状pythonでtsv出力していますが、もし出力せずにそのままpython上でグラフ化できるようであればその方法も教えていただけると嬉しいです。

from to value datetime 0 0x4e6f10ed3b919cbbd872807f866ded9acdf7eede 0.0 2019-01-08 10:28:22 1 0x5a4d185c590c5815a070ed62c278e665d137a0d9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 02:00:23 2 0x5a4d185c590c5815a070ed62c278e665d137a0d9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 07:12:22 3 0x5a4d185c590c5815a070ed62c278e665d137a0d9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 07:13:43 4 0x5a4d185c590c5815a070ed62c278e665d137a0d9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 07:39:11 5 0x7efee171ed6e9fd40dff6d7beaeba006d05ba559 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:12:38 6 0x31cdabb1a0b18dd9326f150f352ab2b4597d2bab 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:14:46 7 0x6d603b234a927af2226c0688ad5f8ee7399e984c 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:16:14 8 0x6d603b234a927af2226c0688ad5f8ee7399e984c 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:16:58 9 0xcecddbe88359f6ecebe90b42643b002543f27fe9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:19:33 10 0x3cd673f4b8e7815f4862222ef0786241f952aeae 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:21:24 11 0x3cd673f4b8e7815f4862222ef0786241f952aeae 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:21:32 12 0x3cd673f4b8e7815f4862222ef0786241f952aeae 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:22:05 13 0x02632569d858370906ac6116b0ae25059fb34a82 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.216 2019-01-11 08:22:05 14 0x3cd673f4b8e7815f4862222ef0786241f952aeae 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:22:22 15 0x3c5f0629535c755453ad88ef1fd433022f9d306a 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:23:32 16 0xbae25a69a6eb7341ee834be7635e247e22a1e57a 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:25:05 17 0xde9fcd2c2d0f20699b6f08cc4d449499271d8f18 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:25:09 18 0x862244eeca0c73925b5a4daa14815fb81f499c93 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:26:08 19 0xc35a5fec6be6957899e15559be252db882220b37 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:27:17 20 0xcc55a426d4221d299a4586aaa0cef6e5c12783a4 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:27:17

※抽出じのコードです。

from etherscan import accounts import pandas as pd import datetime as dt API_KEY = 'API_KEY' # change API_KEY ADDRESS = 'ADDRESS' # change address def get_tx_value(page_no, address, api_key): ac = accounts.Account(address=address,api_key=api_key) # txes = ac.get_all_transactions() txes = ac.get_transaction_page(page_no) ret = [] for t in txes: tmp = [] tmp.append(t.get('from')) tmp.append(t.get('to')) tmp.append(int(t.get('value')) / 1000000000000000000 ) tmp.append(dt.datetime.fromtimestamp(int(t.get('timeStamp')))) ret.append(tmp) return ret ret = get_tx_value(page_no=1, address=ADDRESS,api_key=API_KEY) df = pd.DataFrame(ret,columns=['from','to','value','datetime']) df.to_csv('txes.tsv',sep='\t')

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

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

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

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

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

tiitoi

2019/02/08 07:35

tsv 化するのは、データをコンピュータが処理しやすい形式で加工するということになるので、よいと思います。 具体的な tsv ファイルを質問欄に追記できますか?(長い場合は最初の20行ぐらいでよいので)
nishina5

2019/02/08 07:55

早速のお返事ありがとうございます。 すみません、追記の方法がわからなく、どこかに添付機能があるのでしょうか?
nishina5

2019/02/08 08:04

大変失礼しまいた。いま、データを追記させていただきました。
tiitoi

2019/02/08 08:07

修正ありがとうございます。 各行の先頭に '0 ', '1 ' のようなインデックスがついていますが、Excel からコピペしたりしましたか? それとも実際のファイル (メモ帳とかで開く) もこのようになっているのでしょうか?
nishina5

2019/02/08 08:10

ATOM上でそのまま開いてまして、このインデックスも表示されています。
nishina5

2019/02/08 08:13

いま、抽出時のコードも追加いたしました。
guest

回答2

0

ベストアンサー

とりあえず データは pandas にて集計を行い、結果はdrillerさんが書かれている通り matplotlib を使ってグラフ化ですかね。

Python

1import pandas as pd 2import matplotlib.pyplot as plt 3import matplotlib.dates as mdates 4import io 5 6dummy_tsv = """ 7 from to value datetime 80 0x4e6f10ed3b919cbbd872807f866ded9acdf7eede 0.0 2019-01-08 10:28:22 91 0x5a4d185c590c5815a070ed62c278e665d137a0d9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 02:00:23 102 0x5a4d185c590c5815a070ed62c278e665d137a0d9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 07:12:22 113 0x5a4d185c590c5815a070ed62c278e665d137a0d9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 07:13:43 124 0x5a4d185c590c5815a070ed62c278e665d137a0d9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 07:39:11 135 0x7efee171ed6e9fd40dff6d7beaeba006d05ba559 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:12:38 146 0x31cdabb1a0b18dd9326f150f352ab2b4597d2bab 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:14:46 157 0x6d603b234a927af2226c0688ad5f8ee7399e984c 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:16:14 168 0x6d603b234a927af2226c0688ad5f8ee7399e984c 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:16:58 179 0xcecddbe88359f6ecebe90b42643b002543f27fe9 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:19:33 1810 0x3cd673f4b8e7815f4862222ef0786241f952aeae 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:21:24 1911 0x3cd673f4b8e7815f4862222ef0786241f952aeae 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:21:32 2012 0x3cd673f4b8e7815f4862222ef0786241f952aeae 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:22:05 2113 0x02632569d858370906ac6116b0ae25059fb34a82 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.216 2019-01-11 08:22:05 2214 0x3cd673f4b8e7815f4862222ef0786241f952aeae 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:22:22 2315 0x3c5f0629535c755453ad88ef1fd433022f9d306a 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:23:32 2416 0xbae25a69a6eb7341ee834be7635e247e22a1e57a 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:25:05 2517 0xde9fcd2c2d0f20699b6f08cc4d449499271d8f18 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:25:09 2618 0x862244eeca0c73925b5a4daa14815fb81f499c93 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:26:08 2719 0xc35a5fec6be6957899e15559be252db882220b37 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:27:17 2820 0xcc55a426d4221d299a4586aaa0cef6e5c12783a4 0x6cb4ad504816bd3021ae48286f018ac725239b89 0.024 2019-01-11 08:27:17 29""" 30 31df = pd.read_table(io.StringIO(dummy_tsv), parse_dates=['datetime'], index_col='datetime') 32print(df) 33 34conv_df = df.resample('1d').agg({ 35 'from': lambda d:d.drop_duplicates().count(), 36 'value': 'sum'}) 37print(conv_df) 38# value from 39#datetime 40#2019-01-08 0.000 1 41#2019-01-09 0.000 0 42#2019-01-10 0.000 0 43#2019-01-11 0.672 13 44 45conv_df.plot() #グラフを書く 46plt.show() #表示

### CSV版 ###

Python

1import pandas as pd 2import matplotlib.pyplot as plt 3import matplotlib.dates as mdates 4import io 5 6dummy_csv = """ 7,from,to,value,datetime 80,0x4e6f10ed3b919cbbd872807f866ded9acdf7eede,,0.0,2019-01-08 10:28:22 91,0x5a4d185c590c5815a070ed62c278e665d137a0d9,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 02:00:23 102,0x5a4d185c590c5815a070ed62c278e665d137a0d9,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 07:12:22 113,0x5a4d185c590c5815a070ed62c278e665d137a0d9,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 07:13:43 124,0x5a4d185c590c5815a070ed62c278e665d137a0d9,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 07:39:11 135,0x7efee171ed6e9fd40dff6d7beaeba006d05ba559,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:12:38 146,0x31cdabb1a0b18dd9326f150f352ab2b4597d2bab,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:14:46 157,0x6d603b234a927af2226c0688ad5f8ee7399e984c,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:16:14 168,0x6d603b234a927af2226c0688ad5f8ee7399e984c,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:16:58 179,0xcecddbe88359f6ecebe90b42643b002543f27fe9,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:19:33 1810,0x3cd673f4b8e7815f4862222ef0786241f952aeae,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:21:24 1911,0x3cd673f4b8e7815f4862222ef0786241f952aeae,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:21:32 2012,0x3cd673f4b8e7815f4862222ef0786241f952aeae,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:22:05 2113,0x02632569d858370906ac6116b0ae25059fb34a82,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.216,2019-01-11 08:22:05 2214,0x3cd673f4b8e7815f4862222ef0786241f952aeae,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:22:22 2315,0x3c5f0629535c755453ad88ef1fd433022f9d306a,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:23:32 2416,0xbae25a69a6eb7341ee834be7635e247e22a1e57a,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:25:05 2517,0xde9fcd2c2d0f20699b6f08cc4d449499271d8f18,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:25:09 2618,0x862244eeca0c73925b5a4daa14815fb81f499c93,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:26:08 2719,0xc35a5fec6be6957899e15559be252db882220b37,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:27:17 2820,0xcc55a426d4221d299a4586aaa0cef6e5c12783a4,0x6cb4ad504816bd3021ae48286f018ac725239b89,0.024,2019-01-11 08:27:17 29""" 30 31df = pd.read_csv(io.StringIO(dummy_csv), parse_dates=['datetime'], index_col='datetime') 32print(df) 33 34conv_df = df.resample('1d').agg({ 35 'from': lambda d:d.drop_duplicates().count(), 36 'value': 'sum'}) 37print(conv_df) 38# value from 39#datetime 40#2019-01-08 0.000, 1 41#2019-01-09 0.000, 0 42#2019-01-10 0.000, 0 43#2019-01-11 0.672,13 44 45conv_df.plot() #グラフを書く 46plt.show() #表示

イメージ説明

投稿2019/02/08 08:20

編集2019/02/08 09:59
magichan

総合スコア15898

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

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

nishina5

2019/02/08 08:31

お返事ありがとうございます。すみません、こちらを実行したのですが、エラーとなってしまいまして、何か加工が必要でしたでしょうか?
magichan

2019/02/08 08:47

確認しましたところデータ部にてTABが4スペースに変換されたようです ですので、この箇所をTABに戻してみて下さい
magichan

2019/02/08 08:53

あと手元にtsvデータがあるのでしたら read_table(“hove.tsv”, parse_dates...) のようにしても動くと思います
nishina5

2019/02/08 09:00

申し訳ございません、私の理解が追いつかずでして、、、 もし可能でしたら先ほど記載いただいたコードに追記いただけないでしょうか??
magichan

2019/02/08 10:01

どうやら、TABは勝手にSPACEに置き変わってしまうようです。Teratileの仕様なのかな?? とりあえず、TSVをCSVに書き換えたものもを置きましたのでこちらで確認してみてださい。
nishina5

2019/02/12 02:51

ありがとうございます!本当に助かりました!
guest

0

さまざまな方法がありますが、Matplotlibを用いるのが一般的です。
datetime_をX値、from_value_をY値とするとこのように書きます。(_は予約語と被っているためつけています)

python

1import matplotlib.pyplot as plt 2 3 4fig = plt.figure() 5ax = fig.add_subplot(1, 1, 1) 6ax.plot(datetime_, from_) 7ax.plot(datetime_, value) 8plt.show()

投稿2019/02/08 08:05

driller

総合スコア720

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

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

nishina5

2019/02/08 08:43

すみません、もし可能でしたら抽出時のコードと組み合わせて出す場合どのようなコードになるか教授いただけると嬉しいです。
nishina5

2019/02/12 02:52

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問