이어서 본격적으로 주제별 읽기를 시작하겠습니다.
기본적인 문서이외에 제가 추가한 내용은 앞으로 추가)로 구분합니다.
시작은 10 minutes to pandas (10분만에 해보는 판다스)입니다.
This is a short introduction to pandas, geared mainly for new users. You can see more complex recipes in the Cookbook.
판다스가 처음인 사용자를 대상으로 만든 간단한 소개글입니다. Cookbook (쿡북)에서 좀더 복잡한 처리방법들을 볼 수 있습니다.
Customarily, we import as follows:
일반적으로 다음과 같이 라이브러리를 불러옵니다.
In [1]: import numpy as np
In [2]: import pandas as pd
추가) numpy는 수치 계산을 위한 파이썬 라이브러리입니다. https://numpy.org/
pandas를 줄여서 pd
numpy를 줄여서 np
로 하는 것이 많이 사용됩니다.
See the Intro to data structures section.
데이터 구조 소개 (Intro to data structures) 부분을 참조합니다.
Creating a Series by passing a list of values, letting pandas create a default integer index:
값들을 가진 리스트 (list)를 전달해서 시리즈 (Series) 를 생성합니다. 이 때, 판다스가 정수형을 가진 인덱스를 생성합니다:
In [3]: s = pd.Series([1, 3, 5, np.nan, 6, 8])
In [4]: s
Out[4]:
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64
추가) 판다스에서는 주로 시리즈 (Series)와 데이터프레임 (dataframe)으로 데이터를 다룹니다. 시리즈들이 모여서 데이터프레임을 만들게 됩니다. 시리즈 1개도 데이터프레임이 될 수 있습니다. np.nan은 NumPy에서 결측 데이터 (missing value)를 의미합니다. 판다스에서는 NaN으로 표시됩니다. 정수형을 가진 리스트를 전달했지만, 시리즈로 만들어질 때는 데이터형이 float64로 바뀐 것을 볼 수 있습니다.
Creating a DataFrame by passing a NumPy array, with a datetime index using date_range() and labeled columns:
NumPy 배열 (array)를 전달해서 데이터프레임 (DataFrame) 를 만듭니다. 이 때, 아래와 같이 date_range() 로 datetime형식의 인덱스 및 이름을 가진 컬럼을 생성할 수 있습니다:
In [5]: dates = pd.date_range("20130101", periods=6)
In [6]: dates
Out[6]:
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
'2013-01-05', '2013-01-06'],
dtype='datetime64[ns]', freq='D')
In [7]: df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))
In [8]: df
Out[8]:
A B C D
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
2013-01-05 -0.424972 0.567020 0.276232 -1.087401
2013-01-06 -0.673690 0.113648 -1.478427 0.524988
Creating a DataFrame by passing a dictionary of objects that can be converted into a series-like structure:
시리즈와 비슷한 구조로 변환할 수 있는 객체들을 가진 딕셔너리를 전달해서 데이터프레임 (DataFrame) 을 만들 수 있습니다.
In [9]: df2 = pd.DataFrame(
...: {
...: "A": 1.0,
...: "B": pd.Timestamp("20130102"),
...: "C": pd.Series(1, index=list(range(4)), dtype="float32"),
...: "D": np.array([3] * 4, dtype="int32"),
...: "E": pd.Categorical(["test", "train", "test", "train"]),
...: "F": "foo",
...: }
...: )
...:
In [10]: df2
Out[10]:
A B C D E F
0 1.0 2013-01-02 1.0 3 test foo
1 1.0 2013-01-02 1.0 3 train foo
2 1.0 2013-01-02 1.0 3 test foo
3 1.0 2013-01-02 1.0 3 train foo
추가) 딕셔너리 (Dictionary)는 파이썬의 자료형입니다. JSON 형태와 같으며, key:value (키:값)을 형태로 되어 있습니다. 사전과 같이 단어:설명의 형태입니다. 딕셔너리를 판다스에 전달하면, 키는 컬럼의 이름이 되고, 값은 해당 컬럼의 값이 됩니다. 각 컬럼의 길이는 같아야 합니다. 만약 1개만 주어진다면 해당 값이 반복되어 컬럼을 채웁니다.
The columns of the resulting DataFrame have different dtypes:
데이터프레임을 생성하면 각 컬럼들은 서로 다른 dtypes (자료형) 을 가집니다:
In [11]: df2.dtypes
Out[11]:
A float64
B datetime64[ns]
C float32
D int32
E category
F object
dtype: object
If you’re using IPython, tab completion for column names (as well as public attributes) is automatically enabled. Here’s a subset of the attributes that will be completed:
IPython을 사용하는 환경이라면, 컬럼 이름뿐만 아니라 속성 (public attributes) 입력할 때 탭 완성 (tab completion) 기능이 자동으로 활성화됩니다. 다음은 자동으로 완성되는 속성들의 일부분입니다:
In [12]: df2.<TAB> # noqa: E225, E999
df2.A df2.bool
df2.abs df2.boxplot
df2.add df2.C
df2.add_prefix df2.clip
df2.add_suffix df2.columns
df2.align df2.copy
df2.all df2.count
df2.any df2.combine
df2.append df2.D
df2.apply df2.describe
df2.applymap df2.diff
df2.B df2.duplicated
추가) 일반적으로 리눅스나 맥의 쉘, 윈도우즈의 커맨드창에서 명령어나 경로 등의 입력할 때, 특정 문자를 입력하고 탭을 누르면 해당 되는 문자열을 최대한 운영체제에서 자동으로 채워줍니다.
As you can see, the columns A, B, C, and D are automatically tab completed. E and F are there as well; the rest of the attributes have been truncated for brevity.
위 예제를 보면 컬럼 A, B, C, D가 자동으로 완성되어 보여집니다. 컬럼 E, F 또한 존재하지만, 간결하게 보여주기 위해 생략했습니다.