jyamethyst21 님의 블로그
파이썬 기본 문법 본문
표준 라이브러리
1) datetime.date
- 연, 월, 일로 날짜를 표현할 때 사용하는 함수
import datetime
day1 = datetime.date(2026, 1, 6)
print(day1)
# 결과 : 2026-01-06
2) time.time
- 시간을 ms로 변환해서 출력
import time
time.time()
# 결과 : 1768036486.6875648
3) time.localtime
time.localtime()
# 결과 : time.struct_time(tm_year=2026, tm_mon=1, tm_mday=6, tm_hour=18, tm_min=14, tm_sec=46, tm_wday=5, tm_yday=10, tm_isdst=0)
4) time.ctime
time.ctime()
# 결과 : 'Tue Jan 6 18:14:46 2026'
5) random
- 랜덤으로 정수값, 실수값 등을 반환해줌
- rand는 실수, randint는 정수(범위를 정해서 출력도 가능함)
- choice는 리스트 내에 있는 값 하나를 선택
- sample은 리스트 내의 값을 개수를 지정해서 출력 가능
import random as r
r.random()
# 결과 : 0.6996164352009699
r.randint(1,46)
# 결과 : 35
list_score = []
for i in range(0, 10):
list_score.append(r.randint(60, 101))
print(list_score)
# 결과 : [92, 61, 81, 76, 66, 77, 85, 90, 64, 87]
r.choice(list_score)
# 결과 : 64
r.sample(list_score, 3)
# 결과 : [61, 76, 87]
6) os
- 환경 변수나 디렉터리, 파일 등의 os 자원을 제어할 수 있게 해주는 모듈
- os.environ : 환경설정 등 출력(path 등)
- os.chdir : 디렉터리 변경
- os.getcwd : 현재 경로 출력
- os.mkdir : 디렉터리 생성
- os.rmdir : 디렉터리 삭제
- os.rename : 이름 변경
- os.system : 운영체제에 명령어 직접 실행
- os.popen : 운영체제 실행 후 결과 출력
- os.remove : 파일 삭제
import os
os.getcwd()
# 결과 : 'C:Windows'
7) json
- json 파일을 쉽게 처리하고자 존재하는 모듈
# data.json
{
"name" : "손흥민",
"age" : 30,
"number" : 7
}
import json
with open('data.json','r', encoding = 'utf8') as f:
data = json.load(f)
print(data, type(data))
# 결과 : {'name': '손흥민', 'age': 30, 'number': 7} <class 'dict'>
# dict -> Json 형식의 문자열
json_str_data = json.dumps(data)
print(json_str_data)
# 결과 : {"name": "\uc190\ud765\ubbfc", "age": 30, "number": 7}
넘파이
- 수치 계산에 특화된 라이브러리
- 다차원 배열 객체인 ndarray를 중심으로 작동
- 다양한 함수 지원
# 기본 배열 생성
np.array()
# 예시
import numpy as np
arr1 = np.array([1, 2, 3, 4]) # 1D 배열 생성
print(arr1)
# 결과 : [1,2,3,4]
arr2 = np.array([[1, 2], [3, 4]]) # 2D 배열 생성
print(arr2)
# 결과 : [[1 2]
[3 4]]
1) np.zeros
- 0으로 채워진 배열 생성
zeros = np.zeros((2, 3)) # 2행 3열
print(zeros)
# 결과
[[0. 0. 0.]
[0. 0. 0.]]
2) np.ones
- 1로 채워진 배열 생성
ones = np.ones((3, 2))
print(ones)
# 결과
[[1. 1.]
[1. 1.]
[1. 1.]]
3) np.arange
- 연속적인 숫자로 배열 생성
# 0부터 10까지 2 간격으로 생성
sequence = np.arange(0, 10, 2)
print(sequence)
# 결과
[0 2 4 6 8]
4) np.linspace
- 일정 범위에서 동일 간격으로 숫자 생성
# 0부터 1까지 5개로 나눔
linspace = np.linspace(0, 1, 5)
print(linspace)
# 결과
[0. 0.25 0.5 0.75 1. ]
5) 기본 문법
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # (2, 3): 배열의 크기 (행, 열)
print(arr.ndim) # 2: 배열의 차원 (2D 배열)
print(arr.size) # 6: 배열의 총 원소 개수
print(arr.dtype) # int64: 배열 원소의 데이터 타입
# 결과
(2, 3) 3 배열의 크기 (행, 열)
2 # 배열의 차원 (2D 배열)
6 # 배열의 총 원소 개수
Int64 # 배열 원소의 데이터 타입
# reshape : 배열 크기 변경
arr = np.array([1, 2, 3, 4, 5, 6])
reshaped = arr.reshape(2, 3) # 2행 3열로 변경
print(reshaped)
# 결과
[[1 2 3]
[4 5 6]]
# flatten : 다차원 배열을 1차원 배열로 변경
arr = np.array([[1, 2, 3], [4, 5, 6]])
flattened = arr.flatten()
print(flattened)
# 결과
[1 2 3 4 5 6]
판다스
- 데이터 분석과 조작에 특화된 라이브러리
- 구조화된 데이터 처리 시 유용(행과 열 기반의 데이터 프레임 구조 사용)
1) 데이터 구조
# 데이터 구조
# 1. Series (1차원 데이터 구조, 값과 인덱스)
import pandas as pd
s = pd.series([10,20,30], index=['a','b','c'])
print(s)
# 결과
a 10
b 20
c 30
dtype: int64
# 2. DataFrame
# DataFrame 생성
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [90, 85, 95]
}
df = pd.DataFrame(data)
print(df)
# 결과
Name Age Score
0 Alice 25 90
1 Bob 30 85
2 Charlie 35 95
2) 핵심 문법
# 상위 몇 개의 행 확인
print(df.head()) # 기본적으로 상위 5개 행 출력
print(df.tail(2)) # 하위 2개 행 출력
# 데이터의 크기 확인 (행, 열 개수)
print(df.shape) # (3, 3)
# 데이터 타입 및 결측 값 확인
print(df.info())
# 수치형 데이터의 요약 통계
print(df.describe())
# 단일 열 선택
print(df['Name'])
# 여러 열 선택
print(df[['Name', 'Score']])
# 열 선택
# loc : 라벨(이름) 기반 인덱싱
# iloc : 정수 기반 인덱싱
print(df.loc[0]) # 첫 번째 행 출력
print(df.loc[:, 'Name']) # 모든 행에서 Name 열만 출력
print(df.iloc[1]) # 두 번째 행 출력
print(df.iloc[:, 1]) # 모든 행에서 두 번째 열 출력
# 조건 필터링
# 조건을 만족하는 데이터 선택 (Score가 90 이상)
high_scores = df[df['Score'] >= 90]
print(high_scores)
# 열 추가
# Passed 열 추가
df['Passed'] = df['Score'] >= 90
# 새로운 행 추가
# 1. append
new_row = {'Name': 'David’,
'Age': 28,
'Score': 88,
'Passed': False}
df = df.append(new_row, ignore_index=True)
# 2. concat (1번 방법보다 더 많이 사용)
df = pd.concat([df, new_row], ignore_index = True)
# 데이터 수정
# 특정 값 수정
df.loc[0, 'Score'] = 95
# 열 전체 수정
df['Passed'] = df['Score'] >= 90
# 결측값 처리
# 결측 값 생성
df.loc[1, 'Score'] = None
# 결측 값 확인
print(df.isnull()) # True는 결측 값을 의미
# 결측 값 채우기
df['Score'] = df['Score'].fillna(0)
# 결측 값 제거
df = df.dropna()
# 데이터 정렬
# 오름차순 정렬
sorted_df = df.sort_values(by='Score')
print(sorted_df)
# 내림차순 정렬
sorted_df = df.sort_values(by='Score',
ascending=False)
print(sorted_df)
# 데이터 그룹화
# 데이터 생성
data = {
'Team': ['A', 'A', 'B', 'B'],
'Score': [85, 90, 78, 88]
}
df = pd.DataFrame(data)
# 팀별 평균 점수 계산
grouped = df.groupby('Team')['Score'].mean()
# 데이터 입출력
df.to_csv('output.csv', index=False) # csv 파일로 내보내기
데이터 시각화 (Matplotlib)
- matplotlib는 python에서 데이터를 시각화하기 위한 가장 기본적인 라이브러리
- 선형, 막대, 히스토그램과 같은 다양한 그래프를 통해 시각화 쉽게 구현 가능함
1) 선형 그래프
x = [1,2,3,4,5]
y = [2,3,5,7,19]
plt.plot(
x,y, marker = 'o',linestyle = '-', color = 'b', label='number'
)
plt.title('line graph')
plt.xlabel('x-number')
plt.ylabel('y-value')
plt.legend()
# marker : 점 모양 설정, linestyle : 선 모양 설정, color : 선 색 설정(위 코드는 blue), label : 범례
# title : 그래프 제목, xlabel : x축 이름, ylabel : y축 이름, legend : 범례 생성

2) 막대 그래프
ctgy = ['a','b','c','d','e']
value = [5,7,3,9,6]
# plt.bar(
# ctgy, value, color = 'skyblue', edgecolor = 'black'
# ) # 일반 세로 막대형
plt.barh(
ctgy, value, color = 'skyblue', edgecolor = 'black'
) # 가로 막대형
plt.title('bar graph')
plt.xlabel('ctgy')
plt.ylabel('value')
plt.show()
# edgecolor : 막대 테두리 색 설정

3) 히스토그램
data = np.random.randn(1000)
plt.hist(data, bins=20, color='orange',edgecolor='black')
plt.title('histogram')
plt.xlabel('value range')
plt.ylabel('count')
# bins : 막대 구간 설정

'보안 & IT 지식 🌺' 카테고리의 다른 글
| 머신러닝 & 딥러닝 (0) | 2026.01.08 |
|---|---|
| 머신러닝 & 딥러닝 (0) | 2026.01.07 |
| 파이썬 기본 문법 (0) | 2026.01.05 |
| 2025년 보안 사고 정리 - SKT, 롯데카드, YES24, 쿠팡 (0) | 2026.01.01 |
| 파이썬 기본 문법 (0) | 2026.01.01 |
