# 시리즈는 데이터 프레임에서 한 행이나 열만 선택하면 얻어지는 것
In [6]:
import pandas as pd
In [8]:
titanic = pd.read_csv("titanic.csv")
In [10]:
titanic
Out[10]:
survived pclass sex age sibsp parch fare embarked deck
0 | 3 | male | 22.0 | 1 | 0 | 7.2500 | S | NaN |
1 | 1 | female | 38.0 | 1 | 0 | 71.2833 | C | C |
1 | 3 | female | 26.0 | 0 | 0 | 7.9250 | S | NaN |
1 | 1 | female | 35.0 | 1 | 0 | 53.1000 | S | C |
0 | 3 | male | 35.0 | 0 | 0 | 8.0500 | S | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... |
0 | 2 | male | 27.0 | 0 | 0 | 13.0000 | S | NaN |
1 | 1 | female | 19.0 | 0 | 0 | 30.0000 | S | B |
0 | 3 | female | NaN | 1 | 2 | 23.4500 | S | NaN |
1 | 1 | male | 26.0 | 0 | 0 | 30.0000 | C | C |
0 | 3 | male | 32.0 | 0 | 0 | 7.7500 | Q | NaN |
891 rows × 9 columns
In [12]:
titanic["age"]
Out[12]:
0 22.0
1 38.0
2 26.0
3 35.0
4 35.0
...
886 27.0
887 19.0
888 NaN
889 26.0
890 32.0
Name: age, Length: 891, dtype: float64
In [14]:
type(titanic["age"])
Out[14]:
pandas.core.series.Series
In [18]:
type(titanic.age)
Out[18]:
pandas.core.series.Series
In [20]:
titanic["age"].equals(titanic.age)
Out[20]:
True
In [22]:
age = titanic.age
In [24]:
age
Out[24]:
0 22.0
1 38.0
2 26.0
3 35.0
4 35.0
...
886 27.0
887 19.0
888 NaN
889 26.0
890 32.0
Name: age, Length: 891, dtype: float64
In [26]:
# 판다스에서는 데이터프레임과 시리즈가 대부분의 속성과 메소드를 공유해서 데이터프레임에만 적용되거나 시리즈에만 적용되는 메소드나 속성은 거의 없음
In [30]:
age.head(2)
Out[30]:
0 22.0
1 38.0
Name: age, dtype: float64
In [32]:
age.tail()
Out[32]:
886 27.0
887 19.0
888 NaN
889 26.0
890 32.0
Name: age, dtype: float64
In [36]:
age.dtype
Out[36]:
dtype('float64')
In [38]:
age.shape
Out[38]:
(891,)
In [40]:
len(age) # 판다스의 기본 함수도 사용할 수 있음
Out[40]:
891
In [42]:
age.index
Out[42]:
RangeIndex(start=0, stop=891, step=1)
In [46]:
age.info()
<class 'pandas.core.series.Series'>
RangeIndex: 891 entries, 0 to 890
Series name: age
Non-Null Count Dtype
-------------- -----
714 non-null float64
dtypes: float64(1)
memory usage: 7.1 KB
In [50]:
age.to_frame()
Out[50]:
age
22.0 |
38.0 |
26.0 |
35.0 |
35.0 |
... |
27.0 |
19.0 |
NaN |
26.0 |
32.0 |
891 rows × 1 columns
In [52]:
# Analyzing Numerical Series
In [58]:
age # 수치형 시리즈와 그 데이터에 대해 자세히 배우도록 해보자 , age 열은 다음과 같이 수치형 데이터들을 확인할 수 있음
Out[58]:
0 22.0
1 38.0
2 26.0
3 35.0
4 35.0
...
886 27.0
887 19.0
888 NaN
889 26.0
890 32.0
Name: age, Length: 891, dtype: float64
In [60]:
age.describe() # 통계적 요약 가능, null값과 같은 결측값을 제외한 원소의 수인 count가 714로 표현됨
Out[60]:
count 714.000000
mean 29.699118
std 14.526497
min 0.420000
25% 20.125000
50% 28.000000
75% 38.000000
max 80.000000
Name: age, dtype: float64
In [64]:
age.count() # 결측값을 제외한 값들의 수를 나타낼 수 있음
Out[64]:
714
In [70]:
age.size # 결측값을 포함
Out[70]:
891
In [72]:
len(age) # 마찬가지임
Out[72]:
891
In [74]:
# 판다스 라이브러리의 중요한 장점은 판다스가 지저분하고 불확실한 실제 데이터를 잘 다룰 수 있도록 설계되어 있다는 점임.
In [110]:
'''
Signature:
age.sum(
axis: 'Axis | None' = None,
skipna: 'bool' = True,
numeric_only: 'bool' = False,
min_count: 'int' = 0,
**kwargs,
)
'''
age.sum()
Out[110]:
21205.17
In [108]:
sum(age) # 파이썬 내장함수를 사용하면 nan이 나옴, 내장 함수가 결측값을 어떻게 처리해아할지 모르기 때문임
Out[108]:
nan
In [112]:
age.unique() # 고유 값들만 가져오게됨
Out[112]:
array([22. , 38. , 26. , 35. , nan, 54. , 2. , 27. , 14. ,
4. , 58. , 20. , 39. , 55. , 31. , 34. , 15. , 28. ,
8. , 19. , 40. , 66. , 42. , 21. , 18. , 3. , 7. ,
49. , 29. , 65. , 28.5 , 5. , 11. , 45. , 17. , 32. ,
16. , 25. , 0.83, 30. , 33. , 23. , 24. , 46. , 59. ,
71. , 37. , 47. , 14.5 , 70.5 , 32.5 , 12. , 9. , 36.5 ,
51. , 55.5 , 40.5 , 44. , 1. , 61. , 56. , 50. , 36. ,
45.5 , 20.5 , 62. , 41. , 52. , 63. , 23.5 , 0.92, 43. ,
60. , 10. , 64. , 13. , 48. , 0.75, 53. , 57. , 80. ,
70. , 24.5 , 6. , 0.67, 30.5 , 0.42, 34.5 , 74. ])
In [116]:
len(age.unique()) # 결측값도 포함하기 때문에 89가 출력됨
Out[116]:
89
In [122]:
'''
unique() 와 다른점
Return number of unique elements in the object.
Excludes NA values by default.
'''
age.nunique()
Out[122]:
88
In [136]:
"""
Signature:
age.value_counts(
normalize: 'bool' = False,
sort: 'bool' = True,
ascending: 'bool' = False,
bins=None,
dropna: 'bool' = True,
) -> 'Series'
위에 바꾸면 내입맛대로 사용가능
"""
age.value_counts()
Out[136]:
age
24.00 30
22.00 27
18.00 26
19.00 25
28.00 25
..
36.50 1
55.50 1
0.92 1
23.50 1
74.00 1
Name: count, Length: 88, dtype: int64
In [138]:
30/age.count()
Out[138]:
0.04201680672268908
In [140]:
age.value_counts(bins = 5) # 길이를 구해서 bins = 5 로 설정해두었기 때문에 나누기 5 함
Out[140]:
(16.336, 32.252] 346
(32.252, 48.168] 188
(0.339, 16.336] 100
(48.168, 64.084] 69
(64.084, 80.0] 11
Name: count, dtype: int64
In [142]:
# 여기서 value_counts 의 결과도 판다스 시리즈임
In [154]:
age.value_counts(normalize = True).sum()
Out[154]:
1.0
'개발 > Python' 카테고리의 다른 글
[Pandas] Pandas 연습문제 (0) | 2025.04.20 |
---|---|
[Pandas] 공부한 거 기록 (0) | 2025.04.15 |
[4/2 Pandas] 메서드 공부한 것 정리 (0) | 2025.04.03 |
[Pandas] pandas?? 처음 써보는 python 라이브러리 (0) | 2025.03.25 |
[비전공자의 Python 공부📖] 기본 문법 변수, 정수, 부동소수, 리스트 + Python을 공부하게 된 계기 (0) | 2025.02.09 |