1. 시리즈의 정의
모든 데이터 유형(정수, 문자열, 부동 소수점, Python 객체 등)을 포함할 수 있는 레이블의 1차원 배열입니다.
2. 시리즈 호출 방법
s = pd.Series(데이터, 인덱스=인덱스)
3. 시리즈의 종류
하나의 dtype만 가능합니다. (특정한 경우를 제외하고 여러 유형의 데이터는 허용되지 않습니다.)
4. 시리즈를 만들 수 있는 데이터 유형은 무엇입니까?
1) 파이썬 사전
: 사전의 태그가 인덱스가 되어 태그에 해당하는 데이터 값을 추출합니다.
d = {"a": 0.0, "b": 1.0, "c": 2.0}
pd.Series(d)
Out(10):
a 0.0
b 1.0
c 2.0
dtype: float64
pd.Series(d, index=("b", "c", "d", "a"))
Out(11):
b 1.0
c 2.0
d NaN # dictionary에 'd' 레이블이 없기 때문에 NaN으로 표시됨
a 0.0
2) 은다레이
: 인덱스는 데이터 길이와 같아야 합니다.
: 인덱스가 전달되지 않으면 인덱스가 값으로 생성됩니다. (0, 1, … , 길이(데이터)-1)
In (3): s = pd.Series(np.random.randn(5), index=("a", "b", "c", "d", "e"))
In (4): s
Out(4):
a 0.469112
b -0.282863
c -1.509059
d -1.135632
e 1.212112
dtype: float64
In (5): s.index
Out(5): Index(('a', 'b', 'c', 'd', 'e'), dtype="object")
In (6): pd.Series(np.random.randn(5))
Out(6):
0 -0.173215
1 0.119209
2 -1.044236
3 -0.861849
4 -2.104569
# pandas는 고유하지 않은 인덱스 값을 지원한다.
# 그래서, 중복 인덱스를 허용하지 않는 연산을 시도하면 예외가 발생한다.
3) 스칼라 값
: 데이터가 스칼라 값인 경우 인덱스를 제공해야 합니다.
: 인덱스의 길이만큼 값이 반복됩니다.
pd.Series(5.0, index=("a", "b", "c", "d", "e"))
Out(12):
a 5.0
b 5.0
c 5.0
d 5.0
e 5.0
5. 시리즈의 특징 및 사용법
1) ndarray와 유사하게 작동합니다.
2) 대부분의 NumPy 함수의 인수로 사용할 수 있습니다.
s + s
Out(29):
a 0.938225
b -0.565727
c -3.018117
d -2.271265
e 24.000000
dtype: float64
s * 2
Out(30):
a 0.938225
b -0.565727
c -3.018117
d -2.271265
e 24.000000
dtype: float64
np.exp(s)
Out(31):
a 1.598575
b 0.753623
c 0.221118
d 0.321219
e 162754.791419
3) 슬라이싱과 같은 작업에서 인덱스도 슬라이스로 나뉩니다.
s(0)
Out(13): 0.4691122999071863
s(:3)
Out(14):
a 0.469112
b -0.282863
c -1.509059
dtype: float64
s(s > s.median())
Out(15):
a 0.469112
e 1.212112
dtype: float64
s((4, 3, 1))
Out(16):
e 1.212112
d -1.135632
b -0.282863
dtype: float64
np.exp(s)
Out(17):
a 1.598575
b 0.753623
c 0.221118
d 0.321219
e 3.360575
4) 시리즈와 ndarray의 주요 차이점은 데이터가 시리즈의 레이블로 자동 정렬된다는 것입니다. 이는 편집된 두 시리즈의 레이블이 동일한지 여부를 고려하지 않고 계산을 작성할 수 있으므로 편리합니다.
5) 행 연산을 수행할 때 인덱스가 유니온으로 이어집니다. 둘 다에서 레이블을 찾을 수 없으면 결과가 누락(NaN)으로 표시됩니다.
s = pd.Series({"a": 1, "b": 2, "c": 3, "d": 4, "e": 5})
s(1:) + s(:-1)
Out(1):
a NaN
b 4.0
c 6.0
d 8.0
e NaN
6) 인덱스 레이블로 값을 얻고 설정할 수 있다는 점에서 사전과 유사하게 작동합니다.
s
Out(23):
a 0.469112
b -0.282863
c -1.509059
d -1.135632
e 12.000000
dtype: float64
s("e") = 12.0
"e" in s
Out(24): True
"f" in s
Out(25): False
s("f") # 이 경우에는 해당 레이블이 없기 때문에 에러 발생.
# 그래서, 이럴 경우에는
s.get("f")
s.get("f", np.nan)
Out(28): nan
# 이렇게 사용하면 누락된 레이블이 None 또는 지정된 기본값을 반환한다.
7) 인덱스가 없는 실제 배열이 필요한 경우 Series.array를 사용하십시오.
s.array
Out(19):
<PandasArray>
( 0.4691122999071863, -0.2828633443286633, -1.5090585031735124,
-1.1356323710171934, 1.2121120250208506)
8) 실제 ndarray가 필요한 경우 Series.to_numpy()를 사용하십시오.
s.to_numpy()
Out(20): array(( 0.4691, -0.2829, -1.5091, -1.1356, 1.2121))
9) 이름을 설정 및 변경할 수 있습니다.
s = pd.Series(np.random.randn(5), name="something")
s
Out(34):
0 -0.494929
1 1.071804
2 0.721555
3 -0.706771
4 -1.039575
Name: something, dtype: float64
s.name
Out(35): 'something'
s2 = s.rename("different")
s2.name
Out(37): 'different'
# 이름을 변경하는 경우, s와 s2는 서로 다른 객체를 참조한다.