코딩하는 타코야끼

[Pandas] 2-1강_Pandas DataFrame(메소드) 본문

[T.I.L] : Today I Learned/Pandas

[Pandas] 2-1강_Pandas DataFrame(메소드)

가스오부시 2023. 4. 13. 02:44
728x90
반응형

1. DataFrame 개요

  • 표(table-행렬) 를 다루는 Pandas의 타입.
    • Database의 Table이나 Excel의 표와 동일한 역할을 한다.
  • 분석할 데이터를 가지는 판다스의 가장 핵심적인 클래스이다.
  • 행(row)열(column) 으로 구성되 있다.
  • 각 행과 각 열은 식별자를 가지며 Series와 같이 두가지 종류가 있다.
    • 순번
      • 양수, 음수 index 두가지를 가진다.
      • 컬럼도 내부적으로는 순번으고 관리되지만 우리가 조회할 때 사용할 수는 없다.
    • 이름
      • 명시적으로 지정한 행과 열의 이름을 말한다.
      • 행의 이름은 index name이라고 하고 열의 이름은 column name이라고 한다.
      • index name과 column name은 중복될 수 있다.
      • 명시적으로 지정하지 않으면 양수 순번이 index, column 이름으로 설정된다.
  • 하나의 행과 하나의 열은 Series로 구성된다.
  • DataFrame 객체는 직접 데이터를 넣어 생성하거나 데이터 셋을 파일(csv, 엑셀, DB 등)로 부터 읽어와 생성한다.

2. DataFrame 생성


📍 직접 생성

  •  pd.DataFrame(data [, index=None, columns=None]) 
    • data
      • DataFrame을 구성할 값을 설정
        • Series, List, ndarray를 담은 2차원 배열
        • 열이름을 key로 컬럼의 값 value로 하는 딕션어리(사전)
    • index
      • index명으로 사용할 값 배열로 설정
    • columns
      • 컬럼명으로 사용할 값 배열로 설정
# 2차원 자료구조를 이용해서 생성
np.random.seed(0)
data = np.random.randint(10, size=(5,3))  # 0 ~ 10-1 사이의 난수로 5행, 3열의 행렬 생성
data_df = pd.DataFrame(data, columns=['AA', 'BB', 'CC'], 
                       index=['가', '나', '다', '라', '마'])
data_df


📍 DataFrame의 객체를 파일에 저장

  • DataFrame객체는 다양한 형식의 파일로 저장할 수 있다.
  • 기본구문
    •  DataFrame객체.to_파일타입() 

🌓  CSV 파일로 저장

  •  DataFrame객체.to_csv(파일경로,sep=',', index=True, header=True, encoding) 
    • 텍스트 파일로 저장
    • 파일경로: 저장할 파일경로(경로/파일명)
    • sep : 데이터 구분자
    • index, header: 인덱스/헤더 저장 여부
    • encoding: 기본-UTF-8
    # index/column 이름 저장안함
    grade.to_csv('saved_data/grade3.csv', index=False, header=False)
    

🌓  엑셀로 저장

  •  DataFrame객체.to_excel(파일경로, index=True, header=True) 
grade.to_excel('saved_data/grade2.xls', index=False)

🌓  기타 형식

# pickle => binary(bytes) 로 저장.
grade.to_pickle('saved_data/grade.pkl')
# html 의 테이블로 저장.
grade.to_html('saved_data/grade.html', index=False)

📍 파일로 부터 데이터셋을 읽어와 생성하기

🌓  csv 파일 등 텍스트 파일로 부터 읽어와 생성

  •  pd.read_csv(파일경로, sep=',', header, index_col, na_values, encoding) 
    • 파일경로
      • 읽어올 파일의 경로
    • sep=","
      • 데이터 구분자.
      • 기본값: 쉼표
    • header=정수
      • 열이름(컬럼이름)으로 사용할 행 지정
      • 기본값: 첫번째 행
      • None을 설정하면 Header는 없다는 것으로 파일의 첫번째 행부터 값으로 사용하고 컬럼명은 0부터 자동증가하는 값을 붙인다.
    • index_col=정수,컬럼명
      • index 명으로 사용할 열이름(문자열)이나 열의 순번(정수)을 지정.
      • 생략시 0부터 자동증가하는 값을 붙인다.
    • na_values
      • 읽어올 데이터셋의 값 중 결측치로 처리할 문자열 지정.
grade = pd.read_csv('saved_data/grade1.csv', index_col=0)

🌓  엑셀파일 읽기

grade_xlsx = pd.read_excel('saved_data/grade1.xlsx', index_col=0)
grade_xlsx

grade_xls = pd.read_excel('saved_data/grade2.xls')
grade_xls


3. 주요 메소드, 속성


📍 메소드


📍 데이터 프레임의 기본 정보 조회

🌓  명령어

  • csv 파일 읽기
  • shape
  • info()
  • head()
  • tail()
  • isnull().sum()
    • 컬럼별 null 체크 (sum() 한번 더 하면 총개수)
  • describe() : 숫자형-기술통계값, 범주형-총개수, 고유값들, 최빈값

🌓  DataFrame 자체의 정보

df.info()

🌓  DataFrame 해석

  • object: 문자열
  • 컬럼별로
    1. 결측치 있는 지 여부
    2. 데이터 타입, 크기
      • 데이터 딕셔너리와 비교해서 잘못된 데이터 타입은 없는지 확인
      • 컬럼이 가지는 값에 비해 너무 큰 크기로 잡힌 것은 아닌지 확인

🌓  df.isna( ).sum( )

# 결측치 개수를 확인 => 컬럼별.
# df.isnull()  # 원소별로 결측치인지 여부 확인 : True-결측치, False: 일반값
# df.isnull().sum()
# 1. bool 값들을 sum()-덧셈 : True-1, False-0 ==> True가 몇개?
# 2. DataFrame객체.sum() - 컬럼단위로 계산.
df.isna().sum()

🌓  df.describe( )

# 1. 컬럼단위로 통계치를 묶어서 보여준다.
# 2. 수치형 컬럼들만 보여준다.
df.describe()

 

반응형