| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- GPT
- settings.py
- SSH Tunnel
- 파이참
- 오픈빌더
- 아나콘다
- pycharm
- Chatbot
- chartjs-chart-financial
- psycopg
- 파이선
- ec2
- Python
- 파이팅
- 장고
- 따라하며 배우는 파이썬과 데이터 과학
- django db with ssh tunnel
- postgres
- 이터널리턴
- 파이썬
- 개발일지
- Django
- AWS
- subnet
- RDS
- 챗봇
- database
- vue
- vpc
- Today
- Total
우아한 개발계발 블로그
따라하며 배우는 파이썬과 데이터 과학 (12) – 판다스로 데이터를 분석해보자 본문
2021.06.20 - [Study/따라하며 배우는 파이썬과 데이터 과학] - 따라하며 배우는 파이썬과 데이터 과학 (11) - 차트를 멋지게 그려보자
따라하며 배우는 파이썬과 데이터 과학 (11) - 차트를 멋지게 그려보자
2021.06.20 - [Study/따라하며 배우는 파이썬과 데이터 과학] - 따라하며 배우는 파이썬과 데이터 과학 (10) - 넘파이로 수치 데이터를 처리해보자 따라하며 배우는 파이썬과 데이터 과학 (10) - 넘파이
w00-ah.tistory.com
12.1 Pandas
Microsoft의 엑셀(Excel)은 행과 열로 이루어진 표에 입력된 데이터를 처리하는데 탁월한 성능을 보이고 있다.
데이터 과학자는 전통적으로 2차원 행렬(matrix) 형태의 데이터는 개발자가 편리하게 각 요소나 행, 열에 접근할 수 있기 때문에 이와 같은 테이블 형태의 데이터를 선호한다.
NumPy는 데이터의 속성을 표시하는 행이나 열의 레이블을 가지고 있지 않지만, 파이썬의 판다스(pandas) 패키지를 사용하면 이러한 문제를 해결할 수 있다.
[판다스의 특징]
1. 빠르고 효율적이며 다양한 표현력을 갖춘 자료구조.
실세계 데이터 분석을 위해 만들어진 파이썬 패키지
2. 다양한 형태의 데이터에 적합
이종(heterogeneous) 자료형의 열을 가진 테이블 데이터
시계열 데이터
레이블을 가진 다양한 행렬 데이터
다양한 관측 통계 데이터
3. 핵심구조
시리즈(Series) : 1차원 구조를 가진 하나의 열
데이터프레임(DataFrame) : 복수의 열을 가진 2차원 데이터
4. 판다스가 잘하는 일
결측 데이터 처리
데이터 추가 삭제 (새로운 열의 추가, 특정 열의 삭제 등)
데이터 정렬과 다양한 데이터 조작
데이터 불러오기 및 저장하기
- 파이썬 리스트, 파이썬 딕셔너리, 넘파이 배열을 데이터 프레임으로 변환할 수 있다.
- 판다스로 CSV 파일이나 TSV 파일, 엑셀 파일 등을 열 수 있다.
- URL을 통해 웹 사이트의 CSV 또는 JSON 과 같은 원격 파일 또는 데이터베이스를 열 수 있다.
데이터 보기 및 검사
- df.mean()으로 모든 열의 펴균을 계산할 수 있다.
- df.corr() 으로 데이터프레임의 열 사이의 상관관계를 알 수 있다.
- df.count()로 각 데이터프레임 열에서 null이 아닌 값의 개수를 계산할 수 있다.
필터, 정렬 및 그룹화
- df.sort_values()로 데이터를 정렬할 수 있다.
- 조건을 사용하여 열을 필터링 할 수 있다.
- groupby()를 이요하여 기준에 따라 몇 개의 그룹으로 데이터를 분할할 수 있다.
데이터 정제
- 데이터의 누락 값을 확인할 수 있다.
- 특정한 값을 다른 값으로 대체할 수 있다.
이따금 표로된 자료형이 필요할 때가 있는데, CSV 파일 유형이 파이썬에서 가장 간단하게 텍스트로 만들 수 있는 테이블 형식의 데이터일 것이다.
12.2 CSV
CSV는 쉼표로 구분한 변수(Comma Separated Variables)의 약자이다. 편의점은 CVS다 헷갈리지 말자!
그러나 CSV는 기본적으로 쉼표를 이용하여 데이터를 구분할 뿐이지, 쉼표가 아닌 어떤 구분자라도 데이터를 구분할 수 있다. CSV 파일의 역사를 살짝 보자면 CSV는 원래 스프테드 시트(spread sheet)라는 소프트웨어의 적합한 형식이였으나, 데이터 과학에서 상당수의 데이터들이 CSV형식으로 공유되다보니, 이런 데이터들을 전문적으로 다루고 분석하는 판다스같은 툴이 나오게 된것
CSV는 필드를 나타내는 열과 레코드를 나타내는 행으로 구성된다. 만약 데이터 중간에 구분자가 포함되어야 한다면 따옴표를 사용하여 필드를 묶어야 한다. 예를 들어 데이터가 'I, U'와 같이 중간에 쉼표를 갖고 있다면, 구분자와 이 데이터의 숨표를 구분짓기 위하여, 반드시 데이터를 따옴표로 감싸야한다.
CSV 파일의 첫 번째 레코드에는 열 제목이 포함되어 있을 수 있다. 필요에 따라 열 제목을 지울 수 있다.
CSV 파일의 크기를 알 수 없고 잠재적으로 크기가 큰 경우 한 번에 모든 레코드를 읽지 않는 것이 바람직하다.
현재 행을 읽고, 현재 행을 처리한 후에 그 다음 행을 읽어들이는 방식이나 현재 행이 아닌 특정 크기만큼의 데이터를 읽어 처리하고 다음으로 그 만큼의 크기의 데이터를 가져오는 방식을 취할 수 있다.
이유는 아마 책에는 기술되어 있지 않지만, 방대한 크기의 CSV 데이터 파일을 읽어오려다 병목 현상을 겪을 수 있기 때문이 아닐까? 하는 추측이 있다. 나는 갑작스럽게 너무많은 데이터를 처리해야하여 (속칭) 렉이 걸릴 수 도있으니, 나눠 처리하는게 좋다라는 의미로 받아들였다.
12.2 CSV 사용
파이썬 모듈 csv는 CSV reader 와 CSV writer를 제공한다. 두 객체 모두 첫번째 매개 변수로 파일의 경로를 입력받는다. 그리고 구분자를 따로 특정해야하는 경우에는 delimeter 매개 변수를 이용하여 구분자를 제공할 수 있다
https://raw.githubusercontent.com/dongupak/DataSciPy/master/data/csv/weather.csv
이 책에서는 weather.csv 데이터를 기반으로 내용을 서술하고 있다.
위의 파일을 실행할 파이썬 코드와 같은 위치에 저장하도록 하자.
CSV 파일을 저장했으니
CSV를 읽어와보자
import csv
f = open('./weather.csv') # CSV 파일을 열어서 f에 저장한다.
data = csv.reader(f) # reader() 함수를 이용하여 읽는다.
for row in data:
print(row)
f.close()
# ['일시', '평균기온', '최대풍속', '평균풍속']
# ['2010-08-01', '28.7', '8.3', '3.4']
# ['2010-08-02', '25.2', '8.7', '3.8']
# ['2010-08-03', '22.1', '6.3', '2.9']
# .
# .
# .
# .
실행결과를 자세히보면 첫 번째 행은 데이터의 속성을 표시하는 일시, 평균기온
CSV에서 저장된 데이터를 읽기위해 for 반복문을 사용해야한다. for 반복문으로 한줄씩 읽어오기 때문에 CSV파일이 이것보다 크다면 시간은 배로 걸릴 수 가있다.
위에서 언급했 듯이 데이터의 첫 번째 레코드에 열 제목이 작성되어 있는데,
'Study > 따라하며 배우는 파이썬과 데이터 과학' 카테고리의 다른 글
| 따라하며 배우는 파이썬과 데이터 과학 (14) – 기계학습으로 똑똑한 컴퓨터를 만들자 (0) | 2021.06.20 |
|---|---|
| 따라하며 배우는 파이썬과 데이터 과학 (13) – 시각 정보를 다루어보자 (0) | 2021.06.20 |
| 따라하며 배우는 파이썬과 데이터 과학 (11) - 차트를 멋지게 그려보자 (0) | 2021.06.20 |
| 따라하며 배우는 파이썬과 데이터 과학 (10) - 넘파이로 수치 데이터를 처리해보자 (0) | 2021.06.20 |
| 따라하며 배우는 파이썬과 데이터 과학 (9) - 텍스트를 처리해보자 (0) | 2021.06.20 |