1. 텍스트 파일에서 데이터를 읽고 쓰는법
- pandas.read_csv를 자주 사용할 것이다.
- 텍스트 데이터를 DataFrame으로 읽어오는 함수는 다음과 같은 몇 가지 옵션을 취한다.
- 색인
- 자료형 추론과 데이터 변환
- 날씨 및 시간 분석
- 반복
- 정제되지 않은 데이터 처리
- resad_csv의 인수는 50가지가 넘어가니 필요한 것을 찾아 사용할 것, 왠만한 기능은 다 있다.
텍스트 파일 조금씩 읽어오기
- pd.options.display.max_rows = 10, 최대 출력되는 행의 갯수를 10개로 제한
- nrows: 처음 몇 행만 읽고 싶다면 사용
- chunksize: 파일을 여러 조각으로 읽어볼 수 있다.
데이터를 텍스트 형식으로 기록하기
- to_csv메서드를 이용하면 데이터를 쉼표로 구분된 형식으로 파일에 쓸 수 있다. 다른 구분자도 가능하다
import sys
data.to_csv(sys.stdout, sep="|" # 구분자 변경
data.to_csv(sys.stdout, na_rep="NULL") # 누락된 값을 NULL 로 출력
### 다른 구분자 형식 다루기
- 간혹 read_csv 함수가 데이터를불러오는데 실패할 수 있다. csv.reader함수를 통해 해결
```python
import csv
f = open("example/ex7.csv")
reader csv(f)
for line in reader:
print(line)
f.cloase()
- csv.Dialect를 상속 받아 여러 옵션을 변경할 수 있다.
class my_dialect(csv.Dialect): lineterminator = "\n" delimiter = ";" quotechar = '"' quoting = csv.QUOTE_MINIMAL
reader = csv.reader(f. dialect=my_dialect)
### JSON과 데이터
```python
import json
result = json.loads(obj) # json 문자열을 파이썬 형태로 변환
asjson = json.jumps(result) # 파이썬 객체를 JSON 형태로 변환
XML, HTML: 웹 스크래핑
HTML과 SML 형식의 데이터를 읽고 쓸 수 있는 라이브러리가 부척 많다. lxml은 가장 빠르게 작동하고 깨진 HTML과 XML 파일도 잘 처리하는 라이버리이다. 판다스에는 pandas에는 read_html을 사용하기 위해 설치를 해야한다.
conda install lxml beatifulsoup4 html5lib
or
pip install lxml
- lxml.objectify를 사용하여 xml 파싱하기
from lxml import objectify
path = "datasets/mea_pref/Performance_MNR.xml"
with open(path) as f:
parsed = objectify.parse(f) # 파일을 파싱
root = parsed.getroot() # xml파일의 루트 노드에 대한 참조 획득
root.INDICATOR # INDICATOR XML 요소를 모두 출력
## 2. 이진 데이터 형식
- 데이터를 이진 형식으로 저장하는 가장 간단한 방법은 파이썬 내장 pickle 모듈을 이용하는 것, 하지만 불안정하다.
### 엑셀
```python
conda install openpyxl xlrd
HDF5(대량의 과학 계산용 배열 데이터를 저장하기 위해 고안된 포맷)
conda install pytables
3. 웹 API와 함께 사용하기
conda install requests
4. 데이터베이스와 함께 사용하기
경량 DB sqlite3
import sqlite3
'IT > Data Analysis with python' 카테고리의 다른 글
데이터 준비하기: 조인, 병합, 변형 (0) | 2024.06.17 |
---|---|
데이터 정제 및 준비 (1) | 2024.06.14 |
판다스 시작하기: 핵심기능 및 기술 통계 계산 (1) | 2024.06.02 |
판다스 시작하기: Series, DataFrame (1) | 2024.06.02 |
넘파이 기본: 배열과 백터연산 02 (0) | 2024.05.17 |