15주차 화 1128 (데이터_전처리기초) :: newb

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 15주차 화 1128 (데이터_전처리기초)
    광주인력개발원 일일포스팅(메모장) 2023. 11. 28. 13:34
    728x90
    반응형
    """
    <판다스(pandas)>
     - 행렬 데이터를 처리하기 위한 다양한 함수를 지원하는 라이브러리
     - 파일 읽기, 저장, 행렬데이터 처리, 기본시각화 등 지원
     - 데이터 전처리 과정에서 주로 사용됨
    
    <데이터 분석과정>
     데이터 수집 > 데이터 전처리 > 데이터 가공(필요시 전처리) >
     데이터 분석 탐색 / 시각화(필요시 전처리) > 필요시 모델 훈련(머신러닝 or 딥러닝) >
     웹서비스 또는 분석보고서
    
     * 일반적으로 책에서는 : 데이터수집 > 전처리 > 분석 > 시각화로 설명되고 있다.
     * 분석과정은 회사에 따라 다름.
    """

     

    판다스 임포트!

    import pandas as pd
    """
    <데이터 수집 시 확인 사>
     - 날짜 확인 : 기준일로 사용
     - 범주형 데이터 확인 : 예로 남자 또는 여자와 같은 데이터(연령)
     - 
    """​

     

    ### 데이터 읽어들이기
    
    ### 파일 위치 지정
    file_path = "./files/sample_1.xlsx"
    
    ### 파일 데이터 추출하기
    # - 첫번째 : 파일 지정(위치 포함)
    # - 두번째 : 컬럼명으로 사용할 행의 위치(디폴트 0)
    # - 세번째 : 행의 가장 밑에서부터 포함하지 않을 행의 갯수(디폴트 0)
    # - 네번째 : 가지고 올 열의 범위(A부터 C까지의 열) (디폴트 데이터가 있는 모든 열)
    sample_1 = pd.read_excel(file_path,
                            header=1,
                            skipfooter=2,
                            usecols="A:C")
    	국적코드	성별	입국객수
    0	A01	남성	106320
    1	A01	여성	191436
    2	A31	남성	319
    3	A31	여성	42
    4	A18	남성	158912
    5	A18	여성	232943​

     

    ### 데이터프레임 정보 확인하기
    # - DataFrame 타입 : 행렬을 저장 관리하는 타입
    # - 클래스 왼쪽에 있는 애들 보통은 파일
    # - (중요) info()함수는 데이터의 결측치(nan, null) 데이터 확인 가능
    # - RangeIndex : 전체 행(row)의 갯수
    # - 전체 행의 갯수와 각 컬럼의 갯수가 안 맞으면 -> 결측 데이터가 존재한다는 의미
    # - 컬럼과 행에는 눈에보이는 인덱스(인덱스 값)와 뒤쪽에 있는 인덱스(인덱스 번호)가있다.
    # - 인덱스 값을 (0 > 일)로 바꾸더라도 인덱스 번호는 0번이다.
    # - Dtype에서 object는 문자 / int는 숫자
    
    sample_1.info()

     

    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 6 entries, 0 to 5
    Data columns (total 3 columns):
     #   Column  Non-Null Count  Dtype 
    ---  ------  --------------  ----- 
     0   국적코드    6 non-null      object
     1   성별      6 non-null      object
     2   입국객수    6 non-null      int64 
    dtypes: int64(1), object(2)
    memory usage: 276.0+ bytes

    위와 같이 데이터 타입과 행의 갯수 등 여러가지 정보를 알 수 있다.

     

    ### 데이터프레임 출력
    # - 데이터 행 / 열이 많은 경우 -> 기본 상위 5개, 하위 5개를 추출해서 보여줌
    # - 데이터 행 / 열의 갯수가 작으면 모두 보여줌
    sample_1
    	국적코드	성별	입국객수
    0	A01	남성	106320
    1	A01	여성	191436
    2	A31	남성	319
    3	A31	여성	42
    4	A18	남성	158912
    5	A18	여성	232943

     

    데이터가 어떤 형태인지 볼때 한줄만 꺼내서 볼 수 있다.

    ### head() : 상위 데이터 조회할 때  (기본 5개)
    sample_1.head()
    sample_1.head(1)
    	국적코드	성별	입국객수
    0	A01	남성	106320
    ### tail() : 마지막 데이터 확인(기본 5개)
    sample_1.tail()
    sample_1.tail(1)
    
    	국적코드	성별	입국객수
    5	A18	여성	232943

    마지막 데이터 확인시

     

    기초통계 데이터 확인하

    ### 기초통계 데이터
    # - count : 데이터 행의 갯수
    # - mean : 평균
    # - std : 표준편차
    # - min : 최소값
    # - amx : 최대값
    # 25%, 50%, 75% : 4분위수 데이터(50% -> 중앙값)
    # -> 4분위수 데이터를 이용해서 이상치(이상한) 데이터 확인합니다.
    # - 기초통계 데이터는 숫자값을 가지는 컬럼에 대해서만 확인
    sample_1.describe()
    	입국객수
    count	6.000000
    mean	114995.333333
    std	98105.752006
    min	42.000000
    25%	26819.250000
    50%	132616.000000
    75%	183305.000000
    max	232943.000000

     

    데이터 조회하기
    
    ### 국적코드 데이터 조회하기
    sample_1["국적코드"]
    
    0    A01
    1    A01
    2    A31
    3    A31
    4    A18
    5    A18
    Name: 국적코드, dtype: object

     

    ### 타입 확인하기
    # Series : 튜플과 모양이 같습니다.(사용법도 동일합니다.)
    # {"국적코드" : (데이터, 데이터, ...)}
    type(sample_1["국적코드"])
    
    pandas.core.series.Series

     

    ### 성별 데이터 조회하기
    sample_1["성별"]
    
    0    남성
    1    여성
    2    남성
    3    여성
    4    남성
    5    여성
    Name: 성별, dtype: object

     

    sample_1[["성별"]]
    
    	성별
    0	남성
    1	여성
    2	남성
    3	여성
    4	남성
    5	여성

    2차원 데이터로 나오며 타입이

    pandas.core.frame.DataFrame

    DataFrame으로 바뀐다.

    sample_1[["국적코드","성별"]]
    
    	국적코드	성별
    0	A01	남성
    1	A01	여성
    2	A31	남성
    3	A31	여성
    4	A18	남성
    5	A18	여성

     

    sample_1
    
    	국적코드	성별	입국객수
    0	A01	남성	106320
    1	A01	여성	191436
    2	A31	남성	319
    3	A31	여성	42
    4	A18	남성	158912
    5	A18	여성	232943

     

    기준년월 컬럼 추가하기
    
    ### 2019-11 값을 추가하기
    sample_1["기준년월"] = '2019-11'
    
    sample_1
    
    	국적코드	성별	입국객수	기준년월
    0	A01	남성	106320	2019-11
    1	A01	여성	191436	2019-11
    2	A31	남성	319	2019-11
    3	A31	여성	42	2019-11
    4	A18	남성	158912	2019-11
    5	A18	여성	232943	2019-11

     

    데이터 필터링하기
    
    ### 성별 중에 여성인 데이터만 추출하기
    condition = sample_1["성별"] == "여성"
    condition
    
    0    False
    1     True
    2    False
    3     True
    4    False
    5     True
    Name: 성별, dtype: bool

     

    sample_1[condition == False]
    
    	국적코드	성별	입국객수	기준년월
    0	A01	남성	106320	2019-11
    2	A31	남성	319	2019-11
    4	A18	남성	158912	2019-11

     

    sample_1[(sample_1["성별"] == "여성") == True]
    
    	국적코드	성별	입국객수	기준년월
    1	A01	여성	191436	2019-11
    3	A31	여성	42	2019-11
    5	A18	여성	232943	2019-11

     

    ###  객체 주소 전달 방식
    # - 둘다 같은 곳을 바라봅니다.
    sample_2 = sample_1
    ### copy() : 메모리 복제방식 (신규로 동일하게 생성됨)
    # - 신규로 만들어진 메모리 주소를 받아옴 (서로 영향 안 받음)
    sample_2 = sample_1.copy()

     

     

    728x90
    반응형
Designed by Tistory.