Notice
Recent Posts
Recent Comments
Link
반응형
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

인공지능 요모조모

[Python3] 딥러닝 파이썬 패키지(1) Pandas 본문

ROKEY/Python3

[Python3] 딥러닝 파이썬 패키지(1) Pandas

dvl.hyeon_ 2025. 2. 5. 15:38
반응형

# ROKEY 3기 Python 강의 복습 겸 기록용으로 남기는 글입니다.

: 데이터 분석과 조작을 위한 파이썬 라이브러리

  • 다양한 파일 형식에서 데이터를 읽고 원하는 데이터 형식으로 변환
  • 👉🏻쉼표로 구분된 값(CSV), JSON, SQL, MS Excel, ...

  • 설치 → pip install pandas
  • import → import pandas as pd

1️⃣ 주요 자료구조

(1) Series

: 1차원 배열, 라벨이 있는 데이터

 

방법1) list 데이터를 사용한 객체 생성

👉🏻 인덱스 지정X → 0부터 시작하는 정수 값으로 기본 인덱싱

import pandas as pd 

data = [10, 20, 30] 
series = pd.Series(data) 
print(series)

 

방법2) 딕셔너리 데이터를 사용한 객체 생성

👉🏻 key를 인덱스 값으로 사용

import pandas as pd

data = {'a': 10, 'b': 20, 'c': 30}
series = pd.Series(data)
print(series)

(2) DataFrame

: 2차원 테이블 구조, 라벨이 있는 행(row)과 열(column)

 

방법1) 중첩 리스트 데이터를 사용한 객체 생성

👉🏻 열(column)명을 옵션으로 지정 가능

import pandas as pd 

data = [ 
	[1, 'Alice', 30], 
	[2, 'Bob', 35], 
	[3, 'Charlie', 25] 
] 
df = pd.DataFrame(data, columns=['ID', 'Name', 'Age']) 
print(df)

 

방법2) 딕셔너리 데이터를 사용한 객체 생성

👉🏻 key를 열(column)명으로 사용

import pandas as pd

data = {
	'ID': [1, 2, 3],
	'Name': ['Alice', 'Bob', 'Charlie'], 
	'Age': [30, 35, 25]
}
df = pd.DataFrame(data)
print(df)

2️⃣ 파일 데이터

  CSV 파일 구조

  • 줄 바꿈(enter)으로 구분되는 1개 이상의 행으로 구성
  • 각 행은 1개 이상의 열(=필드)로 구성
  • 필드는 큰따옴표로 둘러싸도 됨 (단, 형식 통일 필요)

 

✅ CSV 파일 기본 생성

  • 텍스트 에디터(ex. 메모장)에 아래와 같이 작성 후 확장자를 (.csv)로 저장
# ch19/data.csv 

ID,이름,가격 
1,비누,300 
2,장갑,150 
3,마스크,230 
4,손수건,400 
5,볼펜,200 
6,건전지,250

 

  CSV 파일 읽기

👉🏻 df_csv = pd.read_csv('C:/rokey/ch19/data.csv')

import pandas as pd 

df_csv = pd.read_csv('C:/rokey/ch19/data.csv') 
print(df_csv)
print(type(df_csv))

  Excel 파일 구조

  • 파일을 북(book)이라고 함
  • 하나의 북 내부에는 여러 개의 시트(sheet)가 존재
  • 각 시트는 행(row)와 열(column)을 가진 2차원 셀(cell)로 구성

  Excel 파일 기본 생성

  • MS 엑셀 프로그램을 통한 생성

  Excel 파일 읽기

  • openpyxl 모듈 추가 설치 → pip install openpyxl
  • 👉🏻 df_xl = pd.read_excel('C:/rokey/ch19/data.xlsx')
import pandas as pd

df_xl = pd.read_excel('C:/rokey/ch19/data.xlsx')

3️⃣ 데이터 탐색

print(df.head()) # 상위 5개 행 보기
print(df.tail()) # 하위 5개 행 보기 

print(df.info()) # 데이터 요약 정보

print(df.describe()) # 기술 통계(ex. count, mean, std, min, ...)

4️⃣ 데이터 활용

print(df.sample(2)) # 랜덤 샘플링
print(df.sample(frac=0.5)) # 특정 비율(50%)로 샘플링

5️⃣ 데이터 조작

print(df['Name']) # 열 선택

# 조건 필터링
filtered = df[df['Age'] > 30] 
print(filtered) 

# 값으로 정렬
sorted_df = df.sort_values(by='Age') 
print(sorted_df) 

# 데이터 추가 및 삭제: 열 추가
df['Salary'] = [50000, 60000, 70000] 
print(df)

# 데이터 추가 및 삭제: 행 추가
df.loc[len(df)] = [54, 'David', 40, 80000] 
print(df)

# 데이터 추가 및 삭제: 행 삭제
df= df.drop(1) # 1번 인덱스 행 삭제
print(df)

6️⃣ 데이터 처리

import pandas as pd

# 데이터 연결(concat())
data2 = {
	'ID': [5, 6],
	'Name': ['Eve', 'Frank'],
	'Age': [28, 33]
}
df2 = pd.DataFrame(data2)
concated = pd.concat([df, df2])
print(concated)

# 데이터 병합(merge())
data3 = {
	'ID': [1, 2, 3, 4, 5, 6],
	'Name': ['HR', 'Engineering', 'Sales', 'R&D', 'Finance', 'Planning']
}
df3 = pd.DataFrame(data3)
merged = pd.merge(concated , df3)
print(merged)

# 결측치 확인(isnull())
print(df.isnull().sum())

# 결측치 채우기(fillna(채울 값))
meanVal = merged['Salary'].mean()
merged['Salary'] = merged['Salary'].fillna(meanVal)
print(merged)

# 중복 데이터 확인(duplicated())
data1 = {
	'ID': [1, 3],
	'Name': ['Alice', 'Charlie'], 
	'Age': [30, 25],
	'Salary': [50000, 70000],
	'Department': ['HR', 'Sales']
}
df1 = pd.DataFrame(data1)
df1 = pd.concat([merged, df1])
print(df1)
print(df1.duplicated())

# 중복 데이터 제거(drop_duplicates())
df1_1 = df1.drop_duplicates()
print(df1_1)

 

NaN(Not a Number)

  • 결측값(NA)에 대한 표현
  • 정의되지 않은 값 / 표현할 수 없는 값 / 누락된 값
  • 값이 없는 경우 None으로 데이터 입력 가능
반응형