Pandas
https://pandas.pydata.org/docs/user_guide/index.html#user-guide
- 테이블 형태의(행렬 구성) 정형 데이터 분석에 최적화
- DataFrame 형태로 모든 데이터 표현 가능
- 다양한 정형 데이터를 통합 관리 ex) json, html, csv, xlsx,,,
- Excel에서 제공하는 연산 기능 거의 다 제공
DataFrame
- 2차원 테이블, 한 줄(행, 열)을 series라 함(series의 모임이 dataframe)
- pandas의 한 열은 하나의 속성을 나타내므로 같은 개념은 동일한 데이터 타입을 가진다
In [3]:
# s는 1, 3, 5, 6, 8을 원소로 가지는 pandas.Series
pd.Series([1,3,5,6,8])
#series는 하나의 데이터타입만을 가진다
Out[3]:
0 1
1 3
2 5
3 6
4 8
dtype: int64
In [4]:
# 12x4 행렬에 1부터 48까지의 숫자를 원소를 가지고, index는 자동으로 0부터 시작하고, coulmns은 순서대로 X1, X2, X3, X4로 하는 DataFrame 생성
df = pd.DataFrame(data=np.arange(1, 49).reshape(12, 4),
columns=['X1', 'X2', 'X3', 'X4'])
df
#arange함수는 어떤 범위내에 있는 숫자들을 표시해줌
#reshape함수는 1~48까지의 나열된 숫자를 12X4 행렬 모양으로 바꿔줌
Out[4]:
X1 | X2 | X3 | X4 | |
---|---|---|---|---|
0 | 1 | 2 | 3 | 4 |
1 | 5 | 6 | 7 | 8 |
2 | 9 | 10 | 11 | 12 |
3 | 13 | 14 | 15 | 16 |
4 | 17 | 18 | 19 | 20 |
5 | 21 | 22 | 23 | 24 |
6 | 25 | 26 | 27 | 28 |
7 | 29 | 30 | 31 | 32 |
8 | 33 | 34 | 35 | 36 |
9 | 37 | 38 | 39 | 40 |
10 | 41 | 42 | 43 | 44 |
11 | 45 | 46 | 47 | 48 |
In [5]:
# dataframe index
df.index
Out[5]:
RangeIndex(start=0, stop=12, step=1)
In [6]:
df.columns
Out[6]:
Index(['X1', 'X2', 'X3', 'X4'], dtype='object')
In [7]:
# dataframe values
df.values
Out[7]:
array([[ 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, 32],
[33, 34, 35, 36],
[37, 38, 39, 40],
[41, 42, 43, 44],
[45, 46, 47, 48]])
In [17]:
# 특정 column을 가져오기, dict과 비슷
df["X1"]
Out[17]:
0 1
1 5
2 9
3 13
4 17
5 21
6 25
7 29
8 33
9 37
10 41
11 45
Name: X1, dtype: int32
In [18]:
# X1 column에 2 더하기, 판다스 연산
df["X1"] + 2
Out[18]:
0 3
1 7
2 11
3 15
4 19
5 23
6 27
7 31
8 35
9 39
10 43
11 47
Name: X1, dtype: int32
In [19]:
# dataframe의 맨 위 다섯줄을 보여주는 head()
df.head()
Out[19]:
X1 | X2 | X3 | X4 | |
---|---|---|---|---|
0 | 1 | 2 | 3 | 4 |
1 | 5 | 6 | 7 | 8 |
2 | 9 | 10 | 11 | 12 |
3 | 13 | 14 | 15 | 16 |
4 | 17 | 18 | 19 | 20 |
In [20]:
# 10줄
df.head(10)
Out[20]:
X1 | X2 | X3 | X4 | |
---|---|---|---|---|
0 | 1 | 2 | 3 | 4 |
1 | 5 | 6 | 7 | 8 |
2 | 9 | 10 | 11 | 12 |
3 | 13 | 14 | 15 | 16 |
4 | 17 | 18 | 19 | 20 |
5 | 21 | 22 | 23 | 24 |
6 | 25 | 26 | 27 | 28 |
7 | 29 | 30 | 31 | 32 |
8 | 33 | 34 | 35 | 36 |
9 | 37 | 38 | 39 | 40 |
In [21]:
# dataframe에 대한 전체적인 요약정보를 보여줍니다. index, columns, null/not-null/dtype/memory usage가 표시됩니다.
df.info()
#non-null은 비어있지 않다는 뜻, Non-Null Count 데이터가 얼마나 차있느냐를 알려주는 것
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 12 entries, 0 to 11
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 X1 12 non-null int32
1 X2 12 non-null int32
2 X3 12 non-null int32
3 X4 12 non-null int32
dtypes: int32(4)
memory usage: 320.0 bytes
In [22]:
# dataframe에 대한 전체적인 통계정보를 보여줍니다.
df.describe()
Out[22]:
X1 | X2 | X3 | X4 | |
---|---|---|---|---|
count | 12.000000 | 12.000000 | 12.000000 | 12.000000 |
mean | 23.000000 | 24.000000 | 25.000000 | 26.000000 |
std | 14.422205 | 14.422205 | 14.422205 | 14.422205 |
min | 1.000000 | 2.000000 | 3.000000 | 4.000000 |
25% | 12.000000 | 13.000000 | 14.000000 | 15.000000 |
50% | 23.000000 | 24.000000 | 25.000000 | 26.000000 |
75% | 34.000000 | 35.000000 | 36.000000 | 37.000000 |
max | 45.000000 | 46.000000 | 47.000000 | 48.000000 |
In [23]:
# X2 column를 기준으로 내림차순 정렬, 오름차순은 ascending 빼면 됌
df.sort_values(by="X2", ascending=False)
#최소단위가 한 series기 때문에 줄 단위로 움직인다, sorting할 때도 한 줄이 같이 움직임
Out[23]:
X1 | X2 | X3 | X4 | |
---|---|---|---|---|
11 | 45 | 46 | 47 | 48 |
10 | 41 | 42 | 43 | 44 |
9 | 37 | 38 | 39 | 40 |
8 | 33 | 34 | 35 | 36 |
7 | 29 | 30 | 31 | 32 |
6 | 25 | 26 | 27 | 28 |
5 | 21 | 22 | 23 | 24 |
4 | 17 | 18 | 19 | 20 |
3 | 13 | 14 | 15 | 16 |
2 | 9 | 10 | 11 | 12 |
1 | 5 | 6 | 7 | 8 |
0 | 1 | 2 | 3 | 4 |
'Python > Pandas' 카테고리의 다른 글
판다스 pandas (6) - isna( ), fillna( ) (0) | 2023.04.30 |
---|---|
판다스 pandas (5) - aggregation, groupby (0) | 2023.04.30 |
판다스 pandas (4) - indexing, iloc, loc, boolean (0) | 2023.04.30 |
판다스 pandas (3) - Index 객체, reset_index (0) | 2023.04.30 |
판다스 pandas (2) - ndarray, list, dict <-> df 변환 (0) | 2023.04.25 |