본문 바로가기
Python/Pandas & numpy

판다스 : 필드집계, 정렬(오름/내림차순), 컬럼추가

by Mr.DonyStark 2024. 2. 2.

필드간 연산

  ○ 변수명[필드명].sum()

  ○ 변수명[필드명].mean()

 

□ 정렬

  ○ 오름차순 : 변수명 = pd.sort_values(by = 필드명, absendng = True)

  ○ 내림차순 : 변수명 = pd.sort_values(by = 필드명, absendng = False)

 

□ 컬럼추가

  ○ 변수명[신규필드명] = 시리즈 데이터

 

□ 예제 : 평균 구하기, 평균보다 큰데이터, 정렬

  ○ 데이터프레임생성

#데이터프레임 생성
scientists = pd.read_csv('C:/Users/romangrism/Desktop/Datasicence/Data\data/python_data/scientists.csv')
scientists.head()

 

  ○ 평균 & 평균보다 큰 데이터

    - 변수명[필드명].mean()

    - 변수명[변수명[필드명] > 변수명[필드명].mean()]

 

#평균나이
scientists['Age'].mean()
#평균나이보다 많은 사람
scientists[ scientists['Age']> scientists['Age'].mean() ]

 

  ○ 오름차순&내림차순

#나이 오름차순
scientists.sort_values(by = 'Age', ascending = True)
#나이 내림차순
scientists.sort_values(by = 'Age', ascending =False)

 

□ 예제 : 컬럼추가, 정렬

  ○ 데이터프레임(csv) 불러오기

cctv_df = pd.read_csv('C:/Users/romangrism/Desktop/Datasicence/Data\data/python_data/01. CCTV_in_Seoul.csv')
cctv_df.head()

 

  ○ 정렬

# #cctv가 가장 적은 5개구 : 오름차순
cctv_df.sort_values(by='소계', ascending = True).head()
# #cctv가 가장 많은 5개구 : 내림차순
cctv_df.sort_values(by='소계', ascending = False).head()

 

  ○ 신규컬럼추가 & 값은 시리즈 데이터 저장

#증가율 컬럼추가
cctv_df['increas_rate'] = ((cctv_df['2015년'] + cctv_df['2016년'])/cctv_df['2014년'])*100
cctv_df

 

□ 예제 : 딕셔너리를 활용해 데이터프레임 생성, 정렬, 특정 행 추출, 특정 필드 추출

  ○ 데이터프레임 생성

student_play = pd.DataFrame({
    '파이썬' : [90,80,70,60],
    '장고' : [98,89,95,95],
    '오라클': [85,95,100,100],
    'HTML' : [100,90,90,90]},
    index=['연아','순아','인아','민아']) #인덱스 설정
student_play

 

  ○ 특정필드 기준 내림차순

#장고점수 내림차순
student_play.sort_values(by='장고', ascending = False)

 

  ○ 특정 필드 추출/표시

# #파이썬, 오라클, HTML 컬럼만 표시
student_play[['파이썬','장고','HTML']]

 

  ○ 특정 행 정보 추출

#인아 행만 추출
student_play.loc['인아']

 

  ○ 특정 필드 추출/표시

#파이썬, HTML 추출
student_play[['파이썬','HTML']]

 

□ 예제 : 데이터 불러올때 데이터 첫행으로 표시방지, 컬럼명 지정, 집계, 조건에의한 데이터 조회

  ○ csv 불러올때 첫행 데이터가 컬럼명으로 표시 방지

#파일열때 데이터 첫행이 필드명으로 들어오는것 방지 (header = None)
no_df = pd.read_csv('C:/Users/romangrism/Desktop/Datasicence/Data\data/python_data/f_list_no_head.csv', header=None)
no_df

 

  ○ 컬럼명 지정

#컬러명 넣기
no_df.columns = ['name','age','job']
no_df

 

  ○ 특정 조건에 의한 데이터 조회

#30살 이상인 인원
no_df[no_df['age']>=30]
#30살 이상이고 이름이 Nate인 행
no_df[(no_df['age']>=30) & (no_df['name']=='Nate') ]
#30살이 아닌 인원들만조회
no_df[no_df['age']!=30]
#이름이 Jenny 또는 Brian인 사람
no_df[(no_df['name']=='Jenny')|(no_df['name']=='Brian')]

 

  ○ 특정 필드만 표시

#컬러명 넣기
no_df.columns = ['name','age','job']