파이썬 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]))

그냥 하고 있는데 어떻게 해야 되는지 감오 안옵니다...ㅜ 알려주세요ㅜ

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 그냥 하면 당연히 안되고 csv 데이터 구조를 분석하고 numpy 튜터리얼을 학습하세요. 다른 모듈을 사용해도 된다면 pandas 도 튜터리얼을 학습해보세요. 정영훈 2020.5.23 22:49

1 답변

    1. csv파일에 어떤 포맷의 어떤 데이터가 들어있는지 몰라서 제 임의로 예시를 들었습니다. 아마 비슷하시지 않을까요?

    2. 혹시 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) # 월별 최고 온도가 정리되서 프린트 됩니다.
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)