2017-09-09 13 views
0

を作成し、私は次の形式のデータをcsvファイル持っている -csvファイルからデータを読み込み、グラフ

Issue_Type  DateTime 
Issue1   03/07/2011 11:20:44 
Issue2   01/05/2011 12:30:34 
Issue3   01/01/2011 09:44:21 
...    ... 

を私は、このcsvファイルを読むことができるんだけど、私は達成することができないんですがにありますグラフにプロットするか、データに基づいて傾向を表示します。

たとえば、私はDatetime(月のみ)とY軸をX軸としたグラフを問題点としてプロットしようとしています。だから私は月ごとに各カテゴリーの下で問題のパターンを示す3行のライングラフで傾向を示すだろう。

私は実際にグラフをプロットするコードがないため、共有することはできませんが、これまではcsvファイルしか読んでいません。私はグラフをプロットするためにさらに進める方法がわかりません

PS:私はPythonを使用することに夢中になっていません - 私は言語を使用していますが、以前はPythonを使ってCSVを解析してきましたが、私は他の言語を使ってアプローチしています。

+0

Pythonを使用している場合、Matplotlibは良いスタートになります。 –

+0

問題を数えるコードはありますか?プロットする前にそれを行う必要があります –

答えて

0

まず、日時フィールドを日付/時刻として解析する必要があります。そのためにdateutil.parserを試してみてください。

次に、毎月の各タイプの問題の数を数える必要があります。それを行う単純な方法は、各問題タイプごとにリストのリストを維持し、各列を繰り返し、どの月とどの問題タイプがあるかを確認し、適切なカウンタを増やすだけです。あなたは問題の種類によってソートされた問題のような周波数の数を、持っている場合は

、あなたは、単にこのような日付に対してそれらをプロットすることができます

import matplotlib.pyplot as plt 
import datetime as dt 

dates = [] 
for year in range(starting_year, ending_year): 
    for month in range(1, 12): 
     dates.append(dt.datetime(year=year, month=month, day=1)) 

formatted_dates = dates.DateFormatter('%b') # Format dates to only show month names 
fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(issues[0], dates) # To plot just issues of type 1 
ax.plot(issues[1], dates) # To plot just issues of type 2 
ax.plot(issues[2], dates) # To plot just issues of type 3 
ax.xaxis.set_major_formatter(formatted_dates) # Format X tick labels 
plt.show() 
plt.close() 
0

これを行う方法は、パンダとのデータフレームを使用することです。

import pandas as pd 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 

df = pd.read_csv("D:\Programmes Python\Data\Data_csv.txt",sep=";") #Reads the csv 
df.index = pd.to_datetime(df["DateTime"]) #Set the index of the dataframe to the DateTime column 
del df["DateTime"] #The DateTime column is now useless 

fig, ax = plt.subplots() 
ax.plot(df.index,df["Issue_Type"]) 
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m')) #This will only show the month number on the graph 

これはIssue1/2/3が整数であることを前提として、私は本当に彼らがすることになったのか理解していないとして、彼らがいたと仮定。

編集:これはその後、トリックを行う必要があり、それはかなりありませんし、おそらく最適化することができ、それがうまく機能:

import pandas as pd 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 

df = pd.read_csv("D:\Programmes Python\Data\Data_csv.txt",sep=";") 
df.index = pd.to_datetime(df["DateTime"]) 
del df["DateTime"] 
list=[] 
for Issue in df["Issue_Type"]: 
    list.append(int(Issue[5:])) 
df["Issue_number"]=list 

fig, ax = plt.subplots() 
ax.plot(df.index,df["Issue_number"]) 
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m')) 
plt.show() 
+0

サンプルデータでコードを実行しようとしています。ナイーブであることを私に許してください、しかし、スクリプトはグラフを印刷していません。 – Firstname

+0

であり、issueTypeは整数ではなく、例csvで説明されている文字です。それにもかかわらず、私は、コードタイプを変更して、問題タイプの整数を含むようにCSVを変更することを試みています – Firstname

+0

コードを少し変更し、問題の番号を抽出する列を作成しました。 、私は最後にplt.show()を追加しましたが、スクリプトはあなたのために今働いているはずです。 Ps:私のcsvファイルで使用している区切り記号は ";"で、もしあなたが違うなら、 'pd.read_csv'コマンドで変更してください – Erlinska

0

正直、私はただの設定/ダウンロードにR. check this link outを使用しますR & RStudio。

data <- read.csv(file="c:/yourdatafile.csv", header=TRUE, sep=",") 
attach(data) 
data$Month <- format(as.Date(data$DateTime), "%m")  
plot(DateTime, Issue_Type) 
関連する問題