본문 바로가기
반응형

5-3. Pandas 제공 자료구조/Series29

[파이썬 판다스] 시리즈에서 데이터를 분할표로 만들기 (unstack) 독립변수가 2개이고, 종속변수는 1개인 데이터를 하나 정의합시다. 독립변수는 지역, 성별이고 종속변수는 인구수 입니다. import pandas as pd import numpy as np #데이터 생성 sr1=pd.Series([50,50,30,30,20,20], index=[['서울','서울','경기','경기','제주',"제주"],['남자','여자','남자','여자','남자','여자']]) >>> sr1 서울 남자 50 여자 50 경기 남자 30 여자 30 제주 남자 20 여자 20 dtype: int64 위 데이터를 분할표로 만들 때는 unstack 메소드를 사용하면 됩니다. >>> sr1.unstack() 남자 여자 경기 30 30 서울 50 50 제주 20 20 자료형을 확인해봅시다. 데이터프레.. 2022. 2. 24.
[파이썬 판다스] 시리즈에서 인덱스 여러 층으로 정의하기 (계층적 인덱스) 독립변수가 두개 이상인 자료를 표로 정리해야하는 경우가 있습니다. 예를들어 독립변수가 거주지, 성별이고 종속변수가 인구 수인 경우를 생각해봅시다. 독립변수 : 거주지, 성별 종속변수 : 인구 수 표로 정리하면 아래와 같습니다. 파이썬 시리즈에서 위 표를 정의해봅시다. import pandas as pd import numpy as np #데이터 생성 sr1=pd.Series([50,50,30,30,20,20], index=[['서울','서울','경기','경기','제주',"제주"],['남자','여자','남자','여자','남자','여자']]) 인덱스를 2차원 리스트로 정의하면 됩니다. 결과는 아래와 같습니다. >>> sr1 서울 남자 50 여자 50 경기 남자 30 여자 30 제주 남자 20 여자 20 dt.. 2022. 2. 24.
[파이썬 판다스] 시리즈의 특정 값을 na 로 바꾸기 시리즈를 하나 정의합시다. import pandas as pd import numpy as np sr1=pd.Series([1,2,3,3,4,5]) 3을 na로 바꾸겠습니다. replace 메소드를 사용합니다. >>> sr1.replace(3,np.nan) 0 1.0 1 2.0 2 NaN 3 NaN 4 4.0 5 5.0 dtype: float64 2022. 2. 7.
[파이썬 판다스] 시리즈 원소 중 NaN 제거 넘파이와 판다스를 불러옵니다. import numpy as np import pandas as pd NaN이 포함된 시리즈를 하나 정의합니다. >>> sr1=pd.Series([1,np.NaN,3,4,5,np.NaN]) >>> sr1 0 1.0 1 NaN 2 3.0 3 4.0 4 5.0 5 NaN dtype: float64 NaN 을 제거할 때는 dropna 함수 또는 메소드를 사용합니다. >>> sr1.dropna() 0 1.0 2 3.0 3 4.0 4 5.0 dtype: float64 2022. 1. 13.
[파이썬 판다스] 시리즈 원소 중 NaN 확인 (isnull) 넘파이와 판다스를 불러옵니다. import numpy as np import pandas as pd NaN이 포함된 시리즈를 하나 정의합니다. >>> sr1=pd.Series([1,np.NaN,3,4,5,np.NaN]) >>> sr1 0 1.0 1 NaN 2 3.0 3 4.0 4 5.0 5 NaN dtype: float64 NaN 여부는 isnull 함수를 사용합니다. >>> pd.isnull(sr1) 0 False 1 True 2 False 3 False 4 False 5 True dtype: bool 또는 isnull 메소드도 가능합니다. >>> sr1.isnull() 0 False 1 True 2 False 3 False 4 False 5 True dtype: bool 2022. 1. 13.
[파이썬 판다스] 시리즈 원소 개수 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd sr1=pd.Series([1,2,3,4,5]) >>> sr1 0 1 1 2 2 3 3 4 4 5 dtype: int64 시리즈 원소 수를 구하는 방법은 아래와 같이 세 가지가 있습니다. >>> len(sr1) 5 >>> len(sr1.index) 5 >>> sr1.size 5 2022. 1. 12.
[파이썬 판다스] 시리즈에서 각 원소가 특정 리스트의 어느 인덱스인지 확인하기 (get_indexer) 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 각 원소가 ['a','b','c','d','e'] 의 몇번째 인덱스인지 확인해봅시다. 이 리스트도 변수에 넣어줍니다. >>> for_idx=['a','b','c','d','e'] s1의 각 원소가 몇번째 인덱스인지 확인해봅시다. >>> pd.Index(for_idx).get_indexer(s1) array([0, 1, 0, 0, 2, 3, 4, 4], dtype=int64) 2022. 1. 10.
[파이썬 판다스] 시리즈에서 각 원소가 특정 리스트에 있는지 판단하기 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 각 원소가 ['a','b'] 에 들어있는지 판단해봅시다. isin 함수를 사용합니다. >>> s1.isin(['a','b']) 0 True 1 True 2 True 3 True 4 False 5 False 6 False 7 False dtype: bool 2022. 1. 10.
[파이썬 판다스] 시리즈에서 원소 별 개수 출력하기 (value_counts) 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 각 원소 별 개수를 출력해봅시다. value_counts 메소드를 사용합니다. >>> s1.value_counts() a 3 e 2 b 1 c 1 d 1 dtype: int64 많이 있는 것 순서대로 정렬된 것을 알 수 있습니다. 등장 순서대로 정렬하려면 sort=False 옵션을 입력하면 됩니다. >>> s1.value_counts(sort=False) a 3 b 1 c 1 d 1 e 2 dtype: int64 위 메소드는 판다스 함수 형태로도 .. 2022. 1. 10.
[파이썬 판다스] 시리즈에서 중복 값 제거하기 (unique) 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 중복 값을 제거해봅시다. unique 메소드를 사용합니다. >>> s1.unique() array(['a', 'b', 'c', 'd', 'e'], dtype=object) 2022. 1. 10.
[파이썬 판다스] 시리즈에 사용되는 통계관련 함수 모음 (평균, 표준편차 등) 시리즈에 사용되는 통계관련 함수는 아래와 같습니다. 메소드 형태로 사용합니다. 시리즈 이름이 sr1이고 함수명이 aa라면 아래와 같이 사용합니다. sr1.aa() 함수는 아래와 같습니다. 1. 통계량 관련 메소드 설명 mean 평균 var 분산 std 표준편차 skew 왜도 kurt 첨도 median 중앙값 mad 중앙값 절대편차 describe 여러 통계량 한번에 출력 quantile 분위수 (0~1사이값 입력) 2. 개수, 합, 차, 곱, 변화율 관련 메소드 설명 count 개수 sum 합 cumsum 누적합 prod 곱 diff 앞 원소와의 차이 pct_change 앞 원소와의 변화율 3. 최대 최소 관련 메소드 설명 min 최솟값 max 최댓값 argmin 최솟값 인덱스 argmax 최댓값 인덱스.. 2022. 1. 4.
[파이썬 판다스] 시리즈 누적합 계산 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행의 이름을 아래와 같이 입력합니다. >>> sr1=pd.Series(np.random.rand(5),index=['R1','R2','R3','R4','R5']) >>> sr1 R1 0.045323 R2 0.962080 R3 0.687952 R4 0.599187 R5 0.783972 dtype: float64 원소의 누적합을 구해봅시다. cumsum 메소드를 사용합니다. >>> sr1.cumsum() R1 0.045323 R2 1.007403 R3 1.695354 R4 2.2.. 2022. 1. 4.
[파이썬 판다스] 시리즈 원소의 최댓값이 들어있는 행 출력 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행의 이름을 아래와 같이 입력합니다. import pandas as pd import numpy as np 원소의 최댓값이 들어있는 행을 출력해봅시다. idxmax 메소드를 사용합니다. >>> sr1.idxmax() 'R2' 2022. 1. 4.
[파이썬 판다스] 시리즈 원소의 평균 구하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행의 이름을 아래와 같이 입력합니다. >>> sr1=pd.Series(np.random.rand(5),index=['R1','R1','R2','R3','R4']) >>> sr1 R1 0.150008 R1 0.285633 R2 0.960971 R3 0.810092 R4 0.846327 dtype: float64 원소의 평균을 구해봅시다. mean 메소드를 사용합니다. >>> sr1.mean() 0.6106061298356524 2022. 1. 4.
[파이썬 판다스] 시리즈 원소의 합 구하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행의 이름을 아래와 같이 입력합니다. >>> sr1=pd.Series(np.random.rand(5),index=['R1','R1','R2','R3','R4']) >>> sr1 R1 0.150008 R1 0.285633 R2 0.960971 R3 0.810092 R4 0.846327 dtype: float64 원소의 합을 구해봅시다. sum 메소드를 사용합니다. >>> sr1.sum() 3.053030649178262 2022. 1. 4.
[파이썬 판다스] 시리즈 행 이름 중복 여부 확인 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합다. 행의 이름을 아래와 같이 입력합니다. >>> sr1=pd.Series(np.random.rand(5),index=['R1','R1','R2','R3','R4']) >>> sr1 R1 0.450499 R1 0.276244 R2 0.263212 R3 0.799937 R4 0.255633 dtype: float64 행 이름에 중복이 있는지 알아봅시다. index.is_unique 메소드를 사용합니다. False가 나오면 중복이 있는 것입니다. >>> sr1.index.is_uniqu.. 2022. 1. 4.
[파이썬 판다스] 시리즈 원소의 순위(rank) 출력하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. sr1=pd.Series(np.random.rand(5)) >>> sr1 0 0.230081 1 0.676289 2 0.867322 3 0.680876 4 0.098489 dtype: float64 시리즈 원소의 순위(rank) 출력해봅시다. rank 메소드를 사용합니다. >>> sr1.rank() 0 2.0 1 3.0 2 5.0 3 4.0 4 1.0 동률(tie) 처리 옵션은 아래와 같습니다. method=' ' 형태로 입력합니다. 디폴트는 average입니다. 예를들어 공.. 2022. 1. 4.
[파이썬 판다스] 시리즈를 값 크기 순으로 정렬하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. >>> sr1=pd.Series(np.random.rand(5)) >>> sr1 0 0.263950 1 0.830847 2 0.731628 3 0.424860 4 0.427524 dtype: float64 값의 크기 순으로 정렬해봅시다. sort_values 메소드를 이용합니다. >>> sr1.sort_values() 0 0.263950 3 0.424860 4 0.427524 2 0.731628 1 0.830847 dtype: float64 역순 정렬은 ascending=Fa.. 2022. 1. 4.
[파이썬 판다스] 시리즈의 행 이름 순으로 정렬하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행이름을 아래와 같이 입력합니다. >>> sr1=pd.Series(np.random.rand(5),index=[3,4,5,1,2]) >>> sr1 0 0.680026 1 0.440253 2 0.852054 3 0.149469 4 0.541459 dtype: float64 행 이름의 순서대로 정렬해봅시다. sort_index 메소드를 사용합니다. >>> sr1.sort_index() 1 0.510453 2 0.250086 3 0.707971 4 0.967175 5 0.33254.. 2022. 1. 3.
[파이썬 판다스] 시리즈의 각 원소에 원하는 함수 적용하기 (map메소드) 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. >>> sr1=pd.Series(np.random.rand(5)) >>> sr1 0 0.680026 1 0.440253 2 0.852054 3 0.149469 4 0.541459 dtype: float64 각 원소에 루트를 씌워보겠습니다. map 메소드를 사용합니다. 물론 np.sqrt 함수를 바로 적용해도 되지만 map 사용법을 익혀야 하므로 아래와 같이 적용하겠습니다. >>> sr1.map(np.sqrt) 0 0.824637 1 0.663515 2 0.923068 3 0... 2022. 1. 3.
[파이썬 판다스] 시리즈의 사칙연산 판다스를 불러옵니다. import pandas as pd 시리즈를 두개 정의합니다. >>> s1=pd.Series([1,2,3,4,5],index=['a','b','c','f','g']) >>> s1 a 1 b 2 c 3 f 4 g 5 dtype: int64 >>> s2=pd.Series([10,20,30,40,50],index=['a','c','d','e','g']) >>> s2 a 10 c 20 d 30 e 40 g 50 dtype: int64 일부러 인덱스를 약간 다르게 정의했습니다. 두 시리즈를 합해봅시다. >>> s1+s2 a 11.0 b NaN c 23.0 d NaN e NaN f NaN g 55.0 dtype: float64 두 시리즈 모두에 있는 인덱스에서만 연산이 수행됩니다. 같은 인덱스.. 2021. 12. 30.
[파이썬 판다스] 시리즈 원소 NaN 여부 확인하기 (결측값) 판다스 시리즈를 하나 정의합시다. NaN을 정의하기 위해 넘파이도 불러옵니다. >>> import pandas as pd >>> import numpy as np >>> s1=pd.Series([1,2,np.NaN,4,5]) >>> s1 0 1.0 1 2.0 2 NaN 3 4.0 4 5.0 dtype: float64 결측값을 True로 출력해봅시다. >>> pd.isnull(s1) 0 False 1 False 2 True 3 False 4 False dtype: bool 또는 아래와 같이 메소드를 사용할 수도 있습니다. >>> s1.isnull() 0 False 1 False 2 True 3 False 4 False dtype: bool 결측값을 False로 출력해봅시다. >>> pd.notnull(s1.. 2021. 12. 14.
[파이썬 판다스] 부등식을 이용한 시리즈 인덱싱 판다스 시리즈를 하나 정의합시다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5]) >>> s1 0 1 1 2 2 3 3 4 4 5 dtype: int64 2이상인 원소를 인덱싱 해봅시다. >>> s1[s1>=2] 1 2 2 3 3 4 4 5 dtype: int64 2 이상 4 이하인 원소를 인덱싱 해봅시다. 판다스에서는 and 연산자가 아니라 & 를 사용해야 합니다. >>> s1[(s1>=2) & (s1 2021. 12. 13.
[파이썬 Pandas] 시리즈(Series) 요소 수정 [파이썬 Pandas] 시리즈(Series) 요소 수정 요소수정은 인덱싱 후에 원하는 값을 입력해주면 됩니다. 예를들어 세번째 요소를 10으로 바꾸고 싶다면 아래와 같이 입력하면 됩니다. >>> A[2]=10>>> A0 11 22 103 4dtype: int64 여러요소를 동시에 바꿀 수도 있습니다. >>> A[0:2]=[100,1000]>>> A0 1001 10002 103 4dtype: int64 2020. 10. 23.
[파이썬 Pandas] 시리즈(Series) 인덱싱(2) 문자 인덱스 사용 [파이썬 Pandas] 시리즈(Series) 인덱싱 (2) 문자 인덱스 사용 시리즈를 하나 정의합시다. 인덱스도 함께 정의해주겠습니다. A=pd.Series([1,2,3,4],index=['a','b','c','d']) >>> Aa 1b 2c 3d 4dtype: int64 문자로 정의한 인덱스를 이용하여 인덱싱을 하는 방법은 아래와 같습니다. 'a' 를 인덱스로 하는 원소에 접근해봅시다. >>> A['a']1 아래와 같이 리스트를 이용하여 인덱싱하면 시리즈 형태로 출력됩니다. >>> A[['a']]a 1dtype: int64 여러 원소에 접근도 가능합니다. >>> A[['a','c']]a 1c 3dtype: int64 2020. 10. 22.
[파이썬 Pandas] 시리즈(Series) 인덱싱 (1) 숫자 인덱스 사용 [파이썬 Pandas] 시리즈(Series) 인덱싱 (1) 숫자 인덱스 사용 시리즈의 인덱싱과 수정방법을 알아봅시다.인덱싱은 특정 원소(들)에 접근하는 것입니다. 특정원소에 접근하면 그 값을 다른 값으로 바꿀 수 있기 때문에 원소의 수정도 함께 배울 것입니다. 먼저 시리즈를 하나 정의합시다. >>> A=pd.Series([1,2,3,4])>>> A0 11 22 33 4dtype: int64 하나의 원소에 접근 시리즈 A의 첫번째 원소에 접근해보겠습니다. 대괄호를 사용합니다. >>> A[0]1 구간을 이용하여 여러 원소에 접근 구간을 이용할 때는 콜론 : 을 사용합니다. 첫번째와 두번째 원소에 접근할 때는 어떻게 해야할까요? 아마 A[0:1]가 떠오르실 것입니다. 아쉽게도 결과는 아래와 같습니다. 첫번째 .. 2020. 10. 21.
[파이썬 Pandas] 딕셔너리로 시리즈(Series) 정의하기 [파이썬 Pandas] 딕셔너리로 시리즈(Series) 정의하기 딕셔너리를 이용하여 시리즈를 정의하는 방법은 아래와 같습니다. dic = {'list':[1,2,3], 'num':123456, "char": 'hi'}B=pd.Series(dic) >>> Blist [1, 2, 3]num 123456char hidtype: object 2020. 10. 21.
[파이썬 Pandas] 시리즈(Series) 인덱스에 원하는 이름 부여하기 [파이썬 Pandas] 시리즈(Series) 인덱스에 원하는 이름 부여하기 시리즈는 R의 벡터처럼 인덱스에 원하는 이름을 부여할 수 있습니다. 아래와 같은 방법으로 이름을 부여합니다. 인덱스에 이름을 부여할 때도 리스트 자료구조를 사용합니다. import pandas as pd A1=pd.Series([1,2,3,4], index=['a','b','c','d']) >>> A1a 1b 2c 3d 4dtype: int64 하나의 문자가 아니라 여러개의 문자로도 가능할까요? 가능합니다. A2=pd.Series([1,2,3,4], index=['hi','b','c','d']) >>> A2hi 1b 2c 3d 4dtype: int64 띄어쓰기가 있는 문장으로도 가능할까요? 가능합니다. A3=pd.Series([1.. 2020. 10. 21.
[파이썬 Pandas] 시리즈(Series) 소개, 정의 [파이썬 Pandas] 시리즈(Series) 소개, 정의 시리즈는 1차원 배열과 비슷한 자료구조입니다. 딕셔너리와도 비슷합니다. 시리즈는 1열로만 이루어진 자료구조인데 두가지 특징을 가집니다. - 열의 이름을 지정할 수 있음- 각 셀에는 서로 다른 모든 자료형을 넣을 수 있고, 다차원 배열도 넣을 수 있음 직접 사용해보며 이해해봅시다. 먼저 판다스 라이브러리를 불러옵시다. pd라는 이름으로 불러오는 것이 일반적입니다. numpy도 사용할 것이라 함께 불러옵시다. np라는 이름으로 불러오는 것이 일반적입니다. import pandas as pdimport numpy as np 이제 시리즈를 정의합시다. pd.Series( ) 라는 메소드를 사용합니다. 괄호 안에 리스트를 넣어도 되고, 넘파이 배열을 넣어도.. 2020. 10. 21.
반응형