파이썬 csv파일 가져와서 numpy로 최댓값, 분산 구하기
조회수 847회
import numpy as np
import matplotlib.pyplot as plt
import csv
data_file_name = "서울의 1년 온도.csv"
f = open(data_file_name)
temp_data = csv.reader(f)
temp_month = [[], [], [], [], [], [], [], [], [], [], [], []]
for row in temp_data:
if row[4] != '':
m = int(row[0].split('-')[1])-1
temp_month[m].append(float(row[4]))
그냥 하고 있는데 어떻게 해야 되는지 감오 안옵니다...ㅜ 알려주세요ㅜ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
csv파일에 어떤 포맷의 어떤 데이터가 들어있는지 몰라서 제 임의로 예시를 들었습니다. 아마 비슷하시지 않을까요?
혹시 pandas 가 아닌 numpy를 꼭 사용해야만 하는 이유가 있을까요? csv처럼 표 형식의 데이터는 numpy가 아닌 pandas로 조작하는게 훨씬 편리합니다.
import pandas as pd """ Seoul_temperature.csv 파일은 다음과 같은 모양을 띄고 있다고 가정 date | celsius --------------- 2020-01-01 | -17 2020-01-02 | -15 . . . 2020-05-23 | 14.5 2020-05-24 | 15.3 """ # Step 1. CSV 읽기 df = pd.read_csv("./Seoul_temperature.csv") # TODO csv파일이 위치한 경로로 바꿔주세요! # Step 2. date문자열을 datetime 객체로 전환 df['date'] = df['date'].apply(lambda x: pd.to_datetime(x, format='%Y-%m-%d')) # Step 3. 월별 최고 온도를 구하기 위해, "년-월" 태그를 새로 생성 df['ym'] = df['date'].apply(lambda x: x.strftime("%Y-%m")) print("=== 일별 데이터 ===") print(df) # Step 4. 일별 온도의 분산 구하기 variation = df['celsius'].var() print("=== 일별 데이터의 분산 ===") print(variation) # Step 5. 월별로 최고 온도를 정리한 monthly_df 새로 생성 후 프린트 monthly_df = df.groupby('ym').agg({'celsius': 'max'}) print("=== 월별 최고온도 ===") print(monthly_df) # 월별 최고 온도가 정리되서 프린트 됩니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력