2017-09-09 2 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 
...    ... 

을,하지만 내가하는 것입니다 달성 할 수 없어요를 그래프를 그리거나 데이터를 기반으로 추세를 그리십시오.

예를 들어, X 축을 Datetime (월 만)으로, Y 축을 #of Issues로 그래프로 그려 넣으려고합니다. 그래서 한 달 동안 각 카테고리별로 문제의 패턴을 나타내는 3 줄의 라인 그래프로 추세를 보여줄 것입니다.

그래프를 플로팅하는 코드가 없으므로 아무 것도 공유 할 수 없지만 지금까지는 CSV 파일을 읽는 중입니다. 그래프를 그리기 위해 더 진행하는 방법을 모르겠다.

추신 : 나는 파이썬을 사용하는 것에 익숙하지 않다. 이전에 파이썬을 사용하여 CSV를 파싱 했으므로, 더 쉬운 방법이있다. 어떤 다른 언어를 사용하는 접근법 - 나는 그것을 열어 볼 것입니다.

+0

Matplotlib는 Python을 사용하는 것이 좋습니다. –

+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

할 수있는 방법은 팬더와 함께 dataframes을 사용하는 것입니다.

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 

이/2/3 정수 Issue1, 내가 정말 그들이 어떻게 설정되어 있어야 하는지를 이해하지 못 그들이이었다 것으로 가정합니다.

편집 :이 다음 트릭을 할해야합니다, 그것은 꽤 아니다 아마도 최적화 할 수 있지만, 잘 작동 :

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) 
관련 문제