Python

파이썬 크롤링과 시각화 기본다지기(3)

J개발자 2021. 9. 21. 22:04
파일 가져와서 시각화 하기

csv파일 읽기

보통 파일을 열고 닫는 close를 사용하여 메모리 누수를 방지해야하지만 더 편리한 코드 with사용할 수 있다.

with open('/content/drive/MyDrive/1900_python2_jsh/한국환경공단_도로 재비산먼지 측정 정보_20210731 (1).csv', mode='r',encoding='euc-kr')as f:
 li = f.readlines()
#각각의 날짜의 평균 농도 구하기 
def getData(fileName):
 with open('/content/drive/MyDrive/1900_python2_jsh/' +fileName,mode='r',encoding='euc-kr') as f:
   li = f.readlines()
   
 data=[]
 for line in li:
    data.append(line.replace(' " ',''),split(','))
 return(data[0],data[1:])  #항목과 데이터를 튜플로 리턴
with open('/content/drive/MyDrive/1900_python2_jsh/한국환경공단_도로 재비산먼지 측정 정보_20210731 (1).csv', mode='r',encoding='euc-kr')as f:
  li = f.readlines()
  
  #replace(바뀔 문자, 바꿀 문자)
  #print(' hello everyone'.replace('h','H'))
  #print(li[1].replace('"',''))
  
  data=[]
  for line in li:
     data.append(line.replace('"','').split(',')) #['"측정일자","측정시간",""...']  -->  [['측정일자',측정시간',''...']]
  print(li)
  print(data)
  
  
  #날짜 입력받아 해당일에 맞춰 출력하기
  #2021-07-01
  date=input('날짜를 입력하세요  ex) 2021-07-01')
  for line in data:
     if line[0]  ==  date:   #'측정일자'의 값
        print('=====미세먼지 정보=====')
        print('측정일자 : ', line[0])
        print('측정 시간: ',line[1])
        print('미세먼지 농도: ',line[9])


#cvs파일 정보 시각화하기

import matplotlib.pyplot as plt 

tableHead, data= getData('한국환경공단_도로 재비산먼지 측정 정보_20210731 (1).csv')   

#각 날짜별 평균 내기
dustDensity={}
day=0
cnt=0

for line in data:
   if line[0][-2:] =='%02d'%day:  #2021-07-01 에서 01 을 해당함
      cnt+=1
      total+=int(line[9])
      dustDensity[day] = total/cnt
   else:
     total =0
     day+=1
     cnt=0
print(dustDensity)

#key,value()
density = list(dustDensity.values())
date=list((dustDensity.key())  
print(density)
print(date)

#시각화(x: day, y: dustDesnity)
fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(date,density,label='density')
plt.xlabel('date')
plt.ylabel('density')
plt.title('find dust density')
plt.legend()
plt.show()

 

 

 


 

#서울시 공공 자전거 대여 건수 데이터 시각화 하기

import matplotlib.pyplot as plt

tableHead, data = getData('서울특별시 공공자전거 일별 대여건수_21.02.01_21.06.30.csv')
print(tableHead)
print(data)

li=[]
for line in data:
   if line[0] !='':   #대여일존재시 실행
       li.append([line[0],(line[1]+line[2]).replace(' ','')])  #배열 li에 배열을 append
print(li)

li1=[i[0] for i in li]
li2=[int(i[1]) for i in li]
#for i in li:  li1.append(i[0])   li2.append(int(i[1]))
print(li1)
print(li2)

#시각화
plt.figure(figsize=(30,10))
plt.plot(li1,li2)  #x,y 날짜,건수
#회전율
plt.xticks(rotation=90)
plt.legend()
plt.show()

 

 


추가로 배운 내용

 

튜플 언패킹

name, hello = ('jenny','안녕')
print(name)