주제 :
- Unnamed:0라고 표기되는 열을 지운다. 단 Unnamed:0라 쓰지말고 새롭게 컬럼 이름을 만들어서 지운다.
- 0,1,2,3,4로 보여지는 index 부분을 지운다.
- name에 해당되는 영문 이름을 한글로 바꾼다.
- salary에 해당되는 숫자를 000 세자리 단위로 콤마를 넣어서 값을 바꿔 넣는다.
- 1~4를 처리하고 나서 csv파일로 저장한다.
데이터 불러오기
csv_data = pd.read_csv('my_data.csv')
print("\nCSV 파일로부터 읽은 데이터: \n")
print(csv_data)
df= pd.DataFrame(csv_data)
CSV 파일로부터 읽은 데이터:
Unnamed: 0 name age salary
0 0 Alice 25 50000
1 1 Bob 30 60000
2 2 Charlie 35 70000
3 3 james 30 400000
4 4 Alice 25 50000
5 5 Bob 30 60000
6 6 Charlie 35 70000
7 7 james 30 400000
열 삭제
이름 변경
set_axis() 를 이용하여 열 이름을 변경해주었다.
df = df.set_axis(labels=['dels', 'name', 'age', 'salary'],axis=1)
dels name age salary
0 0 Alice 25 50000
1 1 Bob 30 60000
2 2 Charlie 35 70000
3 3 james 30 400000
4 4 Alice 25 50000
5 5 Bob 30 60000
6 6 Charlie 35 70000
7 7 james 30 400000
삭제
drop() 을 사용하여 불필요한 열을 삭제 하는 작업을 진행하였다.
df = df.drop('dels', axis=1)
name age salary
0 Alice 25 50000
1 Bob 30 60000
2 Charlie 35 70000
3 james 30 400000
4 Alice 25 50000
5 Bob 30 60000
6 Charlie 35 70000
7 james 30 400000
중복 삭제
해당 작업을 하라고 하진 않았지만 중복값이 보기 싫어서
drop_duplicates() 를 사용하여 중복 값을 제거 해주었다.
df = df.drop_duplicates()
name age salary
0 Alice 25 50000
1 Bob 30 60000
2 Charlie 35 70000
3 james 30 400000
이름 변경
이름을 한글로 바꿔주기 위하여 kor_name 이라는 diction을 만들고 반복문과 replace 를 사용하여 이름을 변경해주었다.
kor_name = {'Alice' : '앨리스', 'Bob' : '밥', 'Charlie' : '찰리', 'james' : '제임스'}
for key, value in kor_name.items():
df['name'] = df['name'].replace(key, value)
name age salary
0 앨리스 25 50000
1 밥 30 60000
2 찰리 35 70000
3 제임스 30 400000
map
map 을 이용하여 작업하더라도 동일한 결과를 얻는다는 것을 나중에 알게 되었다
df['name'] = df['name'].map(kor_name)
name age salary
0 앨리스 25 50000
1 밥 30 60000
2 찰리 35 70000
3 제임스 30 400000
반복문 안써도 되더라
반복문으로 불편하게 작업 안해도 되더라는걸 이후에 알게 되었음
kor_name = {'Alice' : '앨리스', 'Bob' : '밥', 'Charlie' : '찰리', 'james' : '제임스'}
df['name'] = df['name'].replace(kor_name)
name age salary
0 앨리스 25 50000
1 밥 30 60000
2 찰리 35 70000
3 제임스 30 400000
, 구분자 추가
salary 항목에 , 구분자를 넣어주기위하여 apply 함수를 이용하여 lambda
df['salary'] = df['salary'].apply(lambda x : '{:,}'.format(x))
name age salary
0 앨리스 25 50,000
1 밥 30 60,000
2 찰리 35 70,000
3 제임스 30 400,000
dtype: object
해당 명령어를 실행할 경우 dtype 이 object 형태로 변하게 된다.
0 50,000
1 60,000
2 70,000
3 400,000
Name: salary, dtype: object
구분자 제거
추가된 구분자를 제거하는 것은 replace 를 사용하여 제거해 주면된다.
이렇게 작업해줄 경우, 데이터 타입은 그대로 object 타입으로 남아있게 되는데,
이를 다시 숫자로 바꾸고자 한다면 astype('int64') 를 사용해주면 된다.
df['salary'] = df['salary'].str.replace(',', '').astype('int64')
name age salary
0 앨리스 25 50000
1 밥 30 60000
2 찰리 35 70000
3 제임스 30 400000
저장
new_data 라는 이름으로 저장하였다. 만약 index 가 같이 저장되지 않기를 원한다면, index=False 옵션을 통하여 제외하고 저장할 수 있다.
df.to_csv('new_data.csv', encoding='UTF-8', index=False)
index 지우기
style.hide_index() 를 이용하여 index 를 숨길 수 있지만 'Styler' 객체가 되어 가공과 저장에 문제를 일으키기에 굳이 지워야될 이유를 잘 모르겠다.
df_style = df.style.hide_index()
name age salary
앨리스 25 50000
밥 30 60000
찰리 35 70000
제임스 30 400000
결론
해당 코드는 Github에서 확인 할 수 있다.
본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스 완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성 되었습니다.