jyamethyst21 님의 블로그

파이썬 기본 문법 본문

보안 & IT 지식 🌺

파이썬 기본 문법

jyamethyst21 2026. 1. 6. 23:00

표준 라이브러리

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