Today I Learned (TIL)/Python

[TIL] 데이터 분석 파이썬 종합반 - 5주차(1)

신짜린 2024. 7. 10. 12:26

1. 파일 불러오기 및 저장하기

- 파일 확장자 및 파일 불러오기

파일 확장자 파일 불러오기
CSV 파일 import pandas as pd
df = pd.read_csv('파일 경로')
Excel 파일 import pandas as pd
df = pd.read_excel('파일 경로')
JSON 파일 import pandas as pd
df = pd.read_json('파일 경로')
텍스트 파일 import pandas as pd
df = pd.read_csv('파일 경로', delimiter='\t')
# 만약 탭으로 구분되어 있다면 delimiter='\t'를 사용합니다.

 

- 파일 저장하기

import pandas as pd

data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)
excel_file_path = '/content/sample_data/data.csv'
df.to_csv(excel_file_path, index = False)
-----------------------------------------------------------------------------------------------
import pandas as pd

data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)
excel_file_path = '/content/sample_data/data.xlsx'
df.to_excel(excel_file_path, index = False)
-----------------------------------------------------------------------------------------------
import json

data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

json_file_path = '/content/sample_data/data.json'

# json 파일을 쓰기모드로 열어서 data를 거기에 덮어씌우게 됩니다.
with open(json_file_path, 'w') as jsonfile:
    json.dump(data, jsonfile, indent=4)
-----------------------------------------------------------------------------------------------
data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

text_file_path = '/content/sample_data/data.txt'

with open(text_file_path, 'w') as textfile:
    for key, item in data.items():
        textfile.write(str(key) + " : " + str(item) + '\n')

 

2. 패키지

 데이터 분석을 위한 파이썬 패키지들은 다양한 작업을 수행하는 데 필수적이다. 데이터 수집, 전처리, 시각화, 모델링, 통계 분석 등 다양한 기능을 제공한다. 코드의 재사용성을 높이고, 개발 속도를 빠르게 하며, 코드의 가독성을 향상 시킨다.

- 다양한 종류의 패키지

종류 설명
pandas 데이터 조작과 분석을 위한 라이브러리로, 데이터를 효과적으로 조작하고 분석할 수 있도록 도와줌
numpy 과학적 계산을 위한 핵심 라이브러리로, 다차원 배열과 행렬 연산을 지원
matplotlib 데이터 시각화를 위한 라이브러리로, 다양한 그래프와 플롯을 생성할 수 있음
seaborn Matplotlib을 기반으로 한 통계용 데이터 시각화 라이브러리로, 보다 간편하고 아름다운 시각화를 제공
scikit-learn 머신 러닝 알고리즘을 사용할 수 있는 라이브러리로, 분류, 회귀, 군집화, 차원 축소 등 다양한 머신 러닝 기법을 제공
statsmodels 통계 분석을 위한 라이브러리로, 회귀 분석, 시계열 분석, 비모수 통계 등 다양한 통계 기법을 제공
scipy 과학기술 및 수학적인 연산을 위한 라이브러리로, 선형대수, 최적화, 신호 처리, 통계 분석 등 다양한 기능을 제공
tensorflow 그래프 기반의 계산을 통해 수치 계산을 수행하며, 신경망을 구축하고 학습할 수 있음
pytorch 러닝을 위한 오픈소스 라이브러리로, Facebook에서 개발했습니다. 동적 계산 그래프를 사용하여 신경망을 구축하고 학습할 수 있음
# 아래와 같이 보통은 필요한 패키지를 한번에 다 불러온 다음 코딩을 진행합니다
import pandas as pd
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
import seaborn

 

3. 포맷팅

 문자와 변수를 출력할  때 사용한다. print() 함수보다 조금 더 직관적이고 변수와 문자를 다양하게 많이 출력해야 하는 상황인 경우 편리하게 사용 가능하다.

x = 10
print(f"변수 x의 값은 {x}입니다.")
# f-string 포맷팅을 사용하려면 문자열 맨 앞에 f를 집어 넣고 내가 놓고자 하는 변수의 위치에 중괄호{}를 사용하여 변수와 함께 기입하면 됩니다
-----------------------------------------------------------------------------------------------
x = 10
print("변수 x의 값은 {}입니다.".format(x))
# 문자열 맨 뒤에 온점(.)을 찍고 format() 함수를 사용하며 그 함수에 변수를 집어 넣어주어야 해요!

 

4. 리스트 캄프리헨션

 파이썬에서 리스트를 간결하게 생성하는 방법 중 하나로 보통 반복문과 조건문을 사용하여 리스트를 생성할 때 사용한다.

 리스트 캄프리헨션은 코드를 더 간결하고 가독성 있게 만들어 주며 데이터 처리 및 변환에 유용하게 활용된다.

# 기본적인 구조
[표현식 for 항목 in iterable if 조건문]
-----------------------------------------------------------------------------------------------
# 예시: 1부터 10까지의 숫자를 제곱한 리스트 생성
squares = [x**2 for x in range(1, 11)]
print(squares)  # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
-----------------------------------------------------------------------------------------------
# 예시: 리스트에서 짝수만 선택하여 제곱한 리스트 생성
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)  # 출력: [4, 16, 36, 64, 100]
-----------------------------------------------------------------------------------------------
# 예시: 문자열 리스트에서 각 문자열의 길이를 저장한 리스트 생성
words = ["apple", "banana", "grape", "orange"]
word_lengths = [len(word) for word in words]
print(word_lengths)  # 출력: [5, 6, 5, 6]
-----------------------------------------------------------------------------------------------
# 예시: 리스트 컴프리헨션을 중첩하여 2차원 리스트 생성
matrix = [[i for i in range(1, 4)] for j in range(3)]
print(matrix)  # 출력: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

 

5. lambda 사용하기

 람다 함수는 익명 함수로, 이름 없이 정의되는 간단한 함수이다. 주로 한 줄로 표현되며, 일반적인 함수 정의와는 달리 def키워드를 사용하지 않고 lambda키워드를 사용하여 정의된다.

 복잡한 기능을 가진 함수나 여러 줄의 코드가 필요한 경우에는 일반 함수를 사용하는 것이 좋다. 람다 함수는 주로 함수를 매개변수로 전달하는 함수형 프로그래밍에서 유용하게 활용된다. 

- 람다와 일반 함수의 차이점

구분 람다 일반
정의 방식 lambda 키워드를 사용 def 키워드를 사용
구조 주로 한 줄로 표현되는 간단한 표현식만을 포함 여러 줄의 코드 블록을 가질 수 있음
이름 이름이 없어 한 번만 사용되거나 임시로 필요한 경우 사용 함수의 이름을 지정하여 호출할 수 있음
사용 주로 함수를 매개변수로 받거나 함수형 프로그래밍에서 사용 언제든지 사용 가능
# 간단한 덧셈 함수
add = lambda x, y: x + y
print(add(3, 5))  # 출력: 8
-----------------------------------------------------------------------------------------------
# 제곱 함수
square = lambda x: x ** 2
print(square(4))  # 출력: 16
-----------------------------------------------------------------------------------------------
# filter 라는 내장함수는 여러 개의 데이터로부터 조건을 충족하는 데이터만 추출할 때 사용하는 함수입니다!
# filter(조건 함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 출력: [2, 4, 6, 8, 10]
-----------------------------------------------------------------------------------------------
# map 이라는 내장함수는 여러개의 값을 받아서 각각의 값에 함수를 적용한 결과를 반환한 내장함수 입니다.
# map(함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]