파이썬 102

[Pandas - Python] Discretization and Binning - cut() (이산화 및 분류)

Discretization and Binning - cut() 데이터를 특정 범위에 따라 분류하는 법에 대해 알아보겠습니다. ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32] bins = [18, 25, 35, 60, 100] cats = pd.cut(ages, bins) cats [(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35], (60, 100], (35, 60], (35, 60], (25, 35]] Length: 12 Categories (4, interval[int64, right]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]] cut 함수를 통..

[Pandas - Python] Renaming Axis Indexes - rename() (축의 인덱스 이름 변경)

Renaming Axis Indexes - rename() 이번에는 축의 인덱스 이름을 변경해보겠습니다. data = pd.DataFrame(np.arange(12).reshape((3, 4)), index=['Ohio', 'Colorado', 'New York'], columns=['one', 'two', 'three', 'four']) data onetwothreefour Ohio0123 Colorado4567 New York891011 transform = lambda x: x[:4].upper() data.index.map(transform) Index(['OHIO', 'COLO', 'NEW '], dtype='object') index의 4번째 글자까지 대문자로 변경했습니다. data.index..

[Pandas - Python] Replacing Values - replace() (값 변경)

Replacing Values - replace() data = pd.Series([1., -999., 2., -999., -1000., 3.]) data 0 1.0 1 -999.0 2 2.0 3 -999.0 4 -1000.0 5 3.0 dtype: float64 data.replace(-999, np.nan) 0 1.0 1 NaN 2 2.0 3 NaN 4 -1000.0 5 3.0 dtype: float64 간단하게 -999 값을 NaN 값으로 바꿨습니다. data.replace([-999, -1000], np.nan) 0 1.0 1 NaN 2 2.0 3 NaN 4 NaN 5 3.0 dtype: float64 이번에는 -999와 -1000을 NaN으로 바꿨습니다. data.replace([-999, -1..

[Pandas - Python] Transforming Data Using a Function or Mapping - map() (함수나 매핑을 이용한 데이터 변환)

Transforming Data Using a Function or Mapping - map() data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon', 'Pastrami', 'corned beef', 'Bacon', 'pastrami', 'honey ham', 'nova lox'], 'ounces': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]}) data foodounces 0bacon4.0 1pulled pork3.0 2bacon12.0 3Pastrami6.0 4corned beef7.5 5Bacon8.0 6pastrami3.0 7honey ham5.0 8nova lox6.0 meat_to_animal = { 'bacon': 'pig..

[Pandas - Python] Removing Duplicates - drop_duplicates() (중복 제거)

Removing Duplicates - drop_duplicates() 우선 DataFrame을 하나 만들겠습니다. data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'], 'k2': [1, 1, 2, 3, 3, 4, 4]}) data k1k2 0one1 1two1 2one2 3two3 4one3 5two4 6two4 이때 데이터가 중복되었는지를 알기 위해선 duplicated() 함수를 이용하면 됩니다. data.duplicated() 0 False 1 False 2 False 3 False 4 False 5 False 6 True dtype: bool 중복을 제거하기 위해 drop_duplicates() 함수를 사용하겠습니다. data.drop_duplic..

[Pandas - Python] Handling Missing Data (누락된 데이터 처리)

1. Handling Missing Data - isnull() 데이터를 분석할 때, 데이터가 누락되는 것은 매우 흔한 일입니다. Pandas에서는 누락된 데이터를 처리하는 것이 간단하고, 편합니다. 우선 어떤 데이터가 누락되었는지 알려주는 isnull() 함수를 사용하겠습니다. import pandas as pd import numpy as np string_data = pd.Series(['aardvark', 'artichoke', np.nan, 'avocado']) string_data 0 aardvark 1 artichoke 2 NaN 3 avocado dtype: object string_data.isnull() 0 False 1 False 2 True 3 False dtype: bool 만약 ..

[알고리즘 - Python] BOJ 7450

https://www.acmicpc.net/problem/7450 7450번: Bin Packing The input begins with a single positive integer on a line by itself indicating the number of the cases following, each of them as described below. This line is followed by a blank line, and there is also a blank line between two consecutive inputs. The fir www.acmicpc.net 코드) def func() -> int: cnt = 0 # bin의 개수 l = 0 r = n - 1 # 뒤에서 찾아야함 w..

[Python] Python의 삼항연산자 (Python's Ternary operators)

파이썬에는 c언어와는 다르게 사용자 친화적인 삼항 연산자가 있다. 문법은 참인 경우 값 if 조건 else 거짓인 경우 값 True if Condition else False a = 10 if 10 > 5 else 5 print(a) 10 > 5가 참이므로 앞의 10이 a에 할당된다. 특별히 어려운 점은 없지만, 간혹 헷갈리는 부분이 있다. 바로 삼항 연산자는 값을 내놔야 한다는 것..... a = 10 if 10 > 5 else a = 5 print(a) 이런 명령어는 SyntaxError: cannot assign to conditional expression 라는 오류를 출력한다. 즉 expression이 들어가면 안 된다는 뜻이다...! a = 10 if 10 > 5 else 5라는 문장을 볼 때..

[알고리즘 - C++, Python] SWEA 8016 홀수 피라미드

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWvzGUKKPVwDFASy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 반복문 쓸 필요도 없고, 그냥 점화식 세워서 문제 풀어버리면 된다. c++) #include using namespace std; int main() { unsigned long long int test, i; cin >> test; for (int j = 1; j > i; if (i == 1){ cout

[알고리즘 - Python] BOJ 16563

https://www.acmicpc.net/problem/16563 16563번: 어려운 소인수분해 첫째 줄에는 자연수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 자연수 ki (2 ≤ ki ≤ 5,000,000, 1 ≤ i ≤ N)가 N개 주어진다. www.acmicpc.net from math import sqrt _ = int(input()) # 필요 없음 k = list(map(int, input().split())) # 자연수들 M = max(k) # 자연수의 최댓값 arr = list(i for i in range(M + 1)) # arr을 초기화 함 for i in range(2, int(sqrt(M)) + 1): # 2부터 M의 제곱근까지만 계산해도 됨 if ar..