반응형

“10 minutes to pandas” 문서를 따라해보며 작성했습니다.

https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html 

 

열 이름의 위치가 맞지 않으니 실행하여 결과에서 확인하세요.



2022. 02. 02  최초작성

 

CSV

 

다음 내용으로 test.csv라는 파일을 작성합니다.

첫줄에 있는 컬럼 헤더에 공백이 없도록 주의하세요. Pandas에서 로드후 공백이 포함된 이름이 됩니다.

 

id,alphabet

1,a

2,b

3,c

4,d

5,e



다음 코드로 csv 파일 로드 및 저장을 테스트합니다.

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt



df = pd.read_csv("test.csv")

print(df)
# id alphabet
# 0   1    a
# 1   2    b
# 2   3    c
# 3   4    d
# 4   5    e


df.to_csv('test2.csv', index=None)



새로 생성된 test2.csv의 내용은 다음과 같습니다.

 




HDF5

 

Pandas에 저장된 데이터를 HDF5 포맷으로 저장했다가 로드해봅니다.

추가로 pytables 패키지 설치가 필요합니다.



import numpy as np
import pandas as pd
import matplotlib.pyplot as plt



# 2022년 1월 1일 0시 0분 0초부터 1초 간격으로 20개를 생성합니다.
rng = pd.date_range("1/1/2022", periods=20, freq="S")
print(rng)
# DatetimeIndex(['2022-01-01 00:00:00', '2022-01-01 00:00:01',
#            '2022-01-01 00:00:02', '2022-01-01 00:00:03',
#            '2022-01-01 00:00:04', '2022-01-01 00:00:05',
#            '2022-01-01 00:00:06', '2022-01-01 00:00:07',
#            '2022-01-01 00:00:08', '2022-01-01 00:00:09',
#            '2022-01-01 00:00:10', '2022-01-01 00:00:11',
#            '2022-01-01 00:00:12', '2022-01-01 00:00:13',
#            '2022-01-01 00:00:14', '2022-01-01 00:00:15',
#            '2022-01-01 00:00:16', '2022-01-01 00:00:17',
#            '2022-01-01 00:00:18', '2022-01-01 00:00:19'],
#           dtype='datetime64[ns]', freq='S')


# 앞에서 생성한 시간정보를 인덱스로 하여 0 ~ 10 사이의 숫자를 20개 생성합니다.
ts = pd.Series(np.random.randint(0, 10, len(rng)), index=rng)
print(ts)


# HDF5 포맷을 파일로 저장합니다.
ts.to_hdf("foo.h5", "df")
# 2022-01-01 00:00:00 2
# 2022-01-01 00:00:01 6
# 2022-01-01 00:00:02 4
# 2022-01-01 00:00:03 5
# 2022-01-01 00:00:04 5
# 2022-01-01 00:00:05 9
# 2022-01-01 00:00:06 4
# 2022-01-01 00:00:07 0
# 2022-01-01 00:00:08 1
# 2022-01-01 00:00:09 0
# 2022-01-01 00:00:10 5
# 2022-01-01 00:00:11 7
# 2022-01-01 00:00:12 1
# 2022-01-01 00:00:13 7
# 2022-01-01 00:00:14 5
# 2022-01-01 00:00:15 1
# 2022-01-01 00:00:16 1
# 2022-01-01 00:00:17 5
# 2022-01-01 00:00:18 5
# 2022-01-01 00:00:19 1
# Freq: S, dtype: int64

# HDF5 포맷의 파일을 로드합니다.
print(pd.read_hdf("foo.h5", "df"))
# 2022-01-01 00:00:00 2
# 2022-01-01 00:00:01 6
# 2022-01-01 00:00:02 4
# 2022-01-01 00:00:03 5
# 2022-01-01 00:00:04 5
# 2022-01-01 00:00:05 9
# 2022-01-01 00:00:06 4
# 2022-01-01 00:00:07 0
# 2022-01-01 00:00:08 1
# 2022-01-01 00:00:09 0
# 2022-01-01 00:00:10 5
# 2022-01-01 00:00:11 7
# 2022-01-01 00:00:12 1
# 2022-01-01 00:00:13 7
# 2022-01-01 00:00:14 5
# 2022-01-01 00:00:15 1
# 2022-01-01 00:00:16 1
# 2022-01-01 00:00:17 5
# 2022-01-01 00:00:18 5
# 2022-01-01 00:00:19 1
# Freq: S, dtype: int64




 

Excel

Pandas에 저장된 데이터를 MS Excel 파일로 저장했다가 로드해봅니다.

추가로 openpyxl 패키지 설치가 필요합니다.



import numpy as np
import pandas as pd
import matplotlib.pyplot as plt



# 2022년 1월 1일 0시 0분 0초부터 1초 간격으로 20개를 생성합니다.
rng = pd.date_range("1/1/2022", periods=20, freq="S")
print(rng)
# DatetimeIndex(['2022-01-01 00:00:00', '2022-01-01 00:00:01',
#            '2022-01-01 00:00:02', '2022-01-01 00:00:03',
#            '2022-01-01 00:00:04', '2022-01-01 00:00:05',
#            '2022-01-01 00:00:06', '2022-01-01 00:00:07',
#            '2022-01-01 00:00:08', '2022-01-01 00:00:09',
#            '2022-01-01 00:00:10', '2022-01-01 00:00:11',
#            '2022-01-01 00:00:12', '2022-01-01 00:00:13',
#            '2022-01-01 00:00:14', '2022-01-01 00:00:15',
#            '2022-01-01 00:00:16', '2022-01-01 00:00:17',
#            '2022-01-01 00:00:18', '2022-01-01 00:00:19'],
#           dtype='datetime64[ns]', freq='S')


# 앞에서 생성한 시간정보를 인덱스로 하여 0 ~ 10 사이의 숫자를 20개 생성합니다.
ts = pd.Series(np.random.randint(0, 10, len(rng)), index=rng)
print(ts)


# Excel 파일로 저장합니다.
ts.to_excel("foo.xlsx", sheet_name="Sheet1")
# 2022-01-01 00:00:00 0
# 2022-01-01 00:00:01 8
# 2022-01-01 00:00:02 6
# 2022-01-01 00:00:03 2
# 2022-01-01 00:00:04 3
# 2022-01-01 00:00:05 7
# 2022-01-01 00:00:06 8
# 2022-01-01 00:00:07 1
# 2022-01-01 00:00:08 9
# 2022-01-01 00:00:09 2
# 2022-01-01 00:00:10 9
# 2022-01-01 00:00:11 8
# 2022-01-01 00:00:12 8
# 2022-01-01 00:00:13 8
# 2022-01-01 00:00:14 1
# 2022-01-01 00:00:15 3
# 2022-01-01 00:00:16 7
# 2022-01-01 00:00:17 0
# 2022-01-01 00:00:18 6
# 2022-01-01 00:00:19 6
# Freq: S, dtype: int64


# EXCEL 파일을 로드합니다.
print(pd.read_excel("foo.xlsx", "Sheet1", index_col=None, na_values=["NA"]))
# 0  2022-01-01 00:00:00  0
# 1  2022-01-01 00:00:01  8
# 2  2022-01-01 00:00:02  6
# 3  2022-01-01 00:00:03  2
# 4  2022-01-01 00:00:04  3
# 5  2022-01-01 00:00:05  7
# 6  2022-01-01 00:00:06  8
# 7  2022-01-01 00:00:07  1
# 8  2022-01-01 00:00:08  9
# 9  2022-01-01 00:00:09  2
# 10 2022-01-01 00:00:10  9
# 11 2022-01-01 00:00:11  8
# 12 2022-01-01 00:00:12  8
# 13 2022-01-01 00:00:13  8
# 14 2022-01-01 00:00:14  1
# 15 2022-01-01 00:00:15  3
# 16 2022-01-01 00:00:16  7
# 17 2022-01-01 00:00:17  0
# 18 2022-01-01 00:00:18  6
# 19 2022-01-01 00:00:19  6




Pandas 강좌 1 - Pandas 객체 생성

https://webnautes.tistory.com/1957

 

Pandas 강좌 2 - 데이터 보는 방법

https://webnautes.tistory.com/1958

 

Pandas 강좌 3 - 데이터 선택하는 방법

https://webnautes.tistory.com/1959

 

Pandas 강좌 4 - 연산(Operations)

https://webnautes.tistory.com/1960

 

Pandas 강좌 5 - 연결 및 그룹핑

https://webnautes.tistory.com/1961

 

Pandas 강좌 6 - 시계열(Time series)

https://webnautes.tistory.com/1962

 

Pandas 강좌 7 - 그래프 그리기(Plotting)

https://webnautes.tistory.com/1963

 

Pandas 강좌 8 - Pandas에서 CSV, HDF5, Excel로 저장 및 읽기

https://webnautes.tistory.com/1964

 

Pandas 강좌 9 - 결측치(Missing data)

https://webnautes.tistory.com/1965




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts