私はいくつかの異なるパンダデータフレームのデータを使って時系列をプロットすることに興味があります。私は単一の時系列のデータをプロットする方法を知っており、サブプロットの実行方法はわかっていますが、1つのプロットで複数の異なるデータフレームからプロットする方法はありますか?私は以下のコードを持っています。基本的に私がやっているのは、jsonファイルのフォルダをスキャンし、そのjsonファイルをpandaに解析してプロットできるようにすることです。このコードを実行すると、作成された10個のパンダではなく、1個のパンダからプロットされます。私は10枚のパンダが作成されていることを知っています。なぜなら、それらがすべて正しいことを確認するためのプリントステートメントがあるからです。複数のパンダデータフレームのデータを1つのプロットにプロットする
import sys, re
import numpy as np
import smtplib
import matplotlib.pyplot as plt
from random import randint
import csv
import pylab as pl
import math
import pandas as pd
from pandas.tools.plotting import scatter_matrix
import argparse
import matplotlib.patches as mpatches
import os
import json
parser = argparse.ArgumentParser()
parser.add_argument('-file', '--f', help = 'folder where JSON files are stored')
if len(sys.argv) == 1:
parser.print_help()
sys.exit(1)
args = parser.parse_args()
dat = {}
i = 0
direc = args.f
directory = os.fsencode(direc)
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
for files in os.listdir(direc):
filename = os.fsdecode(files)
if filename.endswith(".json"):
path = '/Users/Katie/Desktop/Work/' + args.f + "/" +filename
with open(path, 'r') as data_file:
data = json.load(data_file)
for r in data["commits"]:
dat[i] = (r["author_name"], r["num_deletions"], r["num_insertions"], r["num_lines_changed"],
r["num_files_changed"], r["author_date"])
name = "df" + str(i).zfill(2)
i = i + 1
name = pd.DataFrame.from_dict(dat, orient='index').reset_index()
name.columns = ["index", "author_name", "num_deletions",
"num_insertions", "num_lines_changed",
"num_files_changed", "author_date"]
del name['index']
name['author_date'] = name['author_date'].astype(int)
name['author_date'] = pd.to_datetime(name['author_date'], unit='s')
ax1.plot(name['author_date'], name['num_lines_changed'], '*',c=np.random.rand(3,))
print(name)
continue
else:
continue
plt.xticks(rotation='35')
plt.title('Number of Lines Changed vs. Author Date')
plt.show()
あなたは私のコードで上記の私の編集を参照してくださいだろうか?私はリストされたすべてのメソッドを試してみましたが、それはパンダのデータフレームの1つだけをプロットしています – K22
ケイト、正直なところあなたのコードはあまり「pythonic」ではなく、最適化されていません。 1つのサイクルで毎回上書きする場合、なぜデータフレームを使用する必要がありますか?それはどんな利点もdictまたは配列を提供せず、実際には遅いです。あるいは、すべての「名前」を1つの大きなデータフレームに列として保存してからプロットすることもできます。だから、短い答え - あなたのループと名前の割り当てで問題が発生する可能性が高いです - 実際には最後のもの、つまり浅いものと深いものの2つです。 – omdv
私はついにそれを手に入れることができました。私のループはどこから外れましたか、今は持っていますが、これを私が使用する必要があるのに効率的です – K22