본문 바로가기
컴퓨터

python pandas 기본 정리

by skyjwoo 2020. 12. 11.
728x90
반응형

항상 찾아서만 쓰다가 정리해 놓을 필요성이 느껴져서 자주 쓰는 함수들을 정리해 보았다. 

 

1. DataFrame 만들기

   1) tuple로 구성된 list를 이용해서 만들기

# DataFrame 만들기
## tuple들의 list를 이용해서 만들기
goal_rank = [(1, '도미닉 칼버트-르윈', 11, '애버튼'), \
            (2, '손흥민', 10, '토트넘'), \
            (3, '모하메드 살라', 9, '리버풀' ), \
            (3, '제이미 바디', 9, '레스터시티'), \
            (5, '패트릭 뱀포드', 8, '리즈 유나이티드'), \
            (5, '해리 케인', 8, '토트넘')]

df1 = pd.DataFrame(goal_rank, columns = ['순위', '이름', '득점 수','소속팀'])
df1.head() #데이터의 앞 5개만 보여준다. 인자로 보여줄 개수를 넣을 수 있다.

실행창 1

 

   2) 리스트를 이용해서 DataFrame 만들기

##리스트를 이용해서 DataFrame 만들기
ranks = [1, 2, 3, 3, 5, 5]
names = ['도미닉 칼버트 르윈', '손흥민', '모하메드 살라', '제이미 바디', '패트릭 뱀포드', '해리 케인']
goals = [11, 10, 9, 9, 8, 8]
teams = ['애버튼', '토트넘', '리버풀', '레스터시티', '리즈 유나이티드', '토트넘']

goals_dict = {'순위': ranks, '이름': names, '득점 수': goals,'소속팀': teams}
df2 = pd.DataFrame(goals_dict)
df2.head()

실행창 2

 

2. 행, 열 추가, 삭제, 수정

 

   1) 행 추가하기

# 행 추가
add_row = [(7, '칼럼 윌슨', 7, '뉴캐슬')]
df_add_row = pd.DataFrame(add_row, columns = ['순위', '이름', '득점 수','소속팀'])
df2 = df2.append(df_add_row)
df2

새로운 행을 DataFrame으로 만들어 준 후, 이를 기존 DataFrame에 append를 이용해 추가한다.

실행창 3

 

   2) 행 삭제하기

#행 삭제
df2.drop(6, 0) #첫번째 인자는 인덱스 번호, 2번째 인자는 인덱스를 참조할 행 또는 열, 행:0, 열:1

간단하게 drop 함수를 써주면 된다. 첫번째 인자는 인덱스 값(인덱스 번호 또는 행, 열 이름), 두 번째 인자는 행 또는 열을 의미한다.

행 삭제 실행창

0번 인덱스 2개가 모두 삭제 되었다. 마지막 인덱스만 삭제하고 싶었다면, 데이터 추가 후 인덱스를 reset 해주는 과정이 필요하다.

 

df2 = df2.reset_index(drop = True)
df2

마지막 행이 아닌 중간에 있는 행을 삭제한 경우 인덱스 초기화가 필요할 수 있다.

reset_index()

 

   3) 열 추가하기

#열 추가
team_goals = [20, 23, 26, 21, 16, 23, 12]
df2['팀 득점'] = team_goals
df2

열추가 실행창

   4) 열 삭제하기

#열 삭제
del df2['팀 득점']
df2

열 삭제 실행창

   5) 데이터 수정하기

# 데이터 수정
df2.loc[df2['이름'] == '손흥민', ['득점 수', '순위']] = (11, 1)
df2

데이터 수정 실행창

손흥민 선수의 득점과 순위를 변경하고자 한다면 위와 같은 코드를 적용해 볼 수 있다. 

 

3. 정렬

 

# 정렬1
df2.sort_values(by = ['팀 득점'], ascending = False)

정렬1 실행창

'팀 득점' 열을 기준으로 내림차순(ascending을 False로)으로 정렬하였다.

# 정렬2
정렬2
df2 = df2.sort_values(by = ['순위', '팀 득점'], ascending = True)
df2

정렬 2 실행창

'순위' 열을 기준으로 정렬 후, '팀 득점'을 두 번째 기준으로 정렬

 

4. grouping

# grouping
group_team = df2['득점 수'].groupby(df2['소속팀'])
group_team.sum()

grouping 실행창

득점 수를 알고 싶은데 이를 소속팀별로 묶어서 살펴보고 싶다. 이에 맞게 적용한 코드. 즉, 상위 득점자들의 팀별 득점 수

 

5. csv 파일 생성, 불러오기

#csv 파일에서 불러오기, 저장하기

df2.to_csv('goal_rank.csv', index = False, encoding = 'euc-kr') #현재 작업 디렉토리에 저장됨
df3 = pd.read_csv('goal_rank.csv', encoding = 'euc-kr')

df3

 

csv 파일 불러오기 실행창

728x90
반응형

댓글