>source

그래서 저는 csv 파일로 작업하고 있으며 그중 일부 그래프를 플로팅하고 싶었습니다. 그러나 Dataframe에서 직접 필요한 정보를 얻을 수있는 방법을 찾지 못했습니다. 코드: numpy를 np로 가져 오기 팬더를 pd로 가져 오기

path_main = '850566403_T_ONTIME.csv'
df1 = pd.read_csv(path_main, header=0, sep=",")
#remove columns and rows with nan
df1.dropna(axis=1, how='all', inplace=True)
df = df1.dropna(subset=['ARR_DELAY_NEW'])

상기 Dataframe의 출력 :

       YEAR  MONTH  AIRLINE_ID  DEST_AIRPORT_ID  ARR_DELAY_NEW
0       2015      2       19805            12892            0.0
2       2015      2       19805            12892            0.0
3       2015      2       19805            12892            0.0
4       2015      2       19805            12892            0.0
5       2015      2       19805            12892            0.0
     ...    ...         ...              ...            ...
429186  2015      2       19393            14107            0.0
429187  2015      2       19393            14107           35.0
429188  2015      2       19393            14679           99.0
429189  2015      2       19393            14679           23.0
429190  2015      2       19393            14679           20.0
[407663 rows x 5 columns]

사전을 만들 수있는 방법이 있는지 알고 싶었습니다. 내 항공사 ID의 키 (여러 번 반복됨)와 키 값이 각기 다른 AIRLINE_ID에 대한 "ARR_DELAY_NEW"의 평균이됩니다. 다음과 같이 보일 것입니다.

d = {19805:average1; 19393:average2}

  • 답변 # 1

    avgs=df.groupby('AIRLINE_ID')['ARR_DELAY_NEW'].mean()
    avgs=dict(avgs)
    
    

  • 답변 # 2

    이 시도:

    d = {}
    airline_id = df.at[0,'AIRLINE_ID']
    total = 0
    count = 0
    for index, row in df.iterrows():
         if df.at[index,'AIRLINE_ID'] == airline_id:
              total += df.at[index,'ARR_DELAY_NEW']
              count += 1
         else:
              d[airline_id] = total / count
              airline_id = df.at[index,'AIRLINE_ID']
              total = 0
              count = 0
    last_id = df.at[len(df)-1, 'AIRLINE_ID']
    d[last_id] = total / count
    
    

관련 자료

  • 이전 dplyr - 데이터 프레임을 확장하기위한 pivot_wider ()
  • 다음 opencv - cv2drawContours 함수가 윤곽선을 제대로 그리지 않습니다