MySQL에서 BLOB 타입의 경우, 문자열 길이에 따라 테이블이 차지하는 용량을 계산할 수 있습니다.

4000 Characters를 BLOB로 저장할 때 크기를 계산하는 방법은 다음과 같습니다.

  1. MySQL BLOB 특성:
    • BLOB 타입은 바이너리 데이터(binary data)를 저장합니다.
    • 문자열이 아니라 바이너리 데이터로 저장되므로, 문자 개수가 아니라 바이트 수로 계산합니다.
    • MySQL에서 일반적으로 1 character = 1 byte로 계산되지만, 문자열이 멀티바이트 (UTF-8 등) 문자 집합을 사용한다면 1 character가 1 byte 이상일 수 있습니다.
  2. 4000 Characters가 차지하는 용량:
    • 문자열이 UTF-8로 인코딩된 경우, 문자당 최대 4바이트가 될 수 있습니다.
    • 최악의 경우(모든 문자가 4바이트를 차지하는 경우) 4000 characters × 4 bytes = 16,000 bytes가 됩니다.
    • 따라서 **16,000 bytes (16 KB)**가 됩니다.
  3. 테이블의 크기 계산:
    • MySQL에서 BLOB 칼럼을 갖는 테이블은 칼럼 외에도 인덱스, 테이블 메타데이터 등의 추가 공간을 차지할 수 있습니다.
    • 그러나, 단순히 BLOB 데이터 자체만 계산한다면 위의 16 KB가 해당 데이터의 크기입니다.
  4. MegaBytes로 변환:
    • 16 KB = 0.015625 MB
    • 따라서, 4000 characters의 데이터가 BLOB 컬럼으로 저장된 경우 약 0.016 MB를 차지합니다.

요약하면, BLOB으로 4000 characters를 저장할 때 데이터가 차지하는 대략적인 크기는 약 0.016 MB입니다.

 

왼쪽 열의 "장치"에서 기본 폴더에 액세스 할 수 있습니다. 

키보드 키 Cmd + Shift + . (점)를 누릅니다. 

이 키 조합을 누르면 모든 숨김 폴더와 파일이 보입니다.

 

 

(llm311) dongsik@dongsikleeui-MacBookPro ~ % cd /Volumes && ll
total 544
drwxr-xr-x   6 root     wheel     192 Sep  5 07:43 .
drwxr-xr-x  20 root     wheel     640 Aug  4 19:31 ..
drwxr-xr-x@  7 dongsik  staff     306 Sep  2 00:58 DBeaver Community
lrwxr-xr-x   1 root     wheel       1 Sep  2 09:31 Macintosh HD -> /
drwx------   1 dongsik  staff   16384 Aug 31 17:54 bpifs
drwx------   1 dongsik  staff  262144 Jan  1  1970 gabriel
(llm311) dongsik@dongsikleeui-MacBookPro /Volumes % pwd
/Volumes

 

이 오류는 Latin-1 인코딩이 특정 문자를 처리할 수 없어서 발생하는 것으로 보입니다. 이 문제를 해결하기 위해 다음과 같은 몇 가지 접근 방법이 있습니다:

 

UTF-8 인코딩 사용: Python에서 기본적으로 UTF-8 인코딩을 사용하는 것이 좋습니다. UTF-8은 대부분의 유니코드 문자를 처리할 수 있습니다.

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

 

문자 인코딩 명시적으로 지정: 파일을 읽거나 쓸 때 문자 인코딩을 명시적으로 지정하여 UnicodeEncodeError를 방지할 수 있습니다.

with open('file.txt', 'w', encoding='utf-8') as f:
    f.write(data)

 

문자열 인코딩 변환: 문자열에 대해 encode() 함수를 사용하여 Unicode 문자열을 바이트 문자열로 변환할 수 있습니다.

encoded_string = your_string.encode('utf-8')

 

latin-1 대신 utf-8로 출력: 프로그램이 텍스트를 출력하는 경우, 출력 스트림의 인코딩을 utf-8로 설정하여 Unicode 문자를 올바르게 처리할 수 있습니다.

import sys
sys.stdout.reconfigure(encoding='utf-8')

 

이러한 접근 방법 중 하나를 사용하여 오류를 해결할 수 있습니다. 선택한 방법은 상황에 따라 다를 수 있으므로 실험을 통해 가장 적합한 방법을 찾아보시기 바랍니다.

B가 A보다 몇 퍼센트 큰지 계산하려면 다음과 같은 공식을 사용할 수 있습니다.

  1. A와 B의 값이 주어졌다고 가정합니다.
  2. B가 A보다 얼마나 큰지 계산합니다.
  3. 계산된 값에 100을 곱하여 백분율로 표시합니다.

수식으로 나타내면 다음과 같습니다.

 

예를 들어, A가 50이고 B가 70이라면 다음과 같이 계산할 수 있습니다.

 
 

따라서 B가 A보다 40% 큽니다.

 
 
 
 

Python의 pandas 라이브러리에서 DataFrame 내에 특정 컬럼(열)이 존재하는지 확인하는 것은 데이터 분석 과정에서 자주 필요한 작업입니다. 이를 확인하는 방법은 여러 가지가 있지만, 가장 직관적이고 간단한 방법은 in 키워드를 사용하는 것입니다. 다음은 이 방법과 함께 몇 가지 다른 방법을 소개합니다.

1. in 키워드 사용

in 키워드는 Python의 기본 문법 중 하나로, 어떤 요소가 리스트나 문자열, 딕셔너리의 키 등에 존재하는지 여부를 반환합니다. pandas DataFrame의 컬럼은 내부적으로 리스트 형태로 관리되므로, 이 키워드를 사용하여 특정 컬럼이 존재하는지 쉽게 확인할 수 있습니다.

import pandas as pd

# 샘플 데이터 생성
data = {'Name': ['John', 'Anna'], 'Age': [28, 34], 'City': ['New York', 'Paris']}
df = pd.DataFrame(data)

# 'Age' 컬럼이 있는지 확인
if 'Age' in df:
    print('컬럼이 존재합니다.')
else:
    print('컬럼이 존재하지 않습니다.')

 

2. columns 속성과 in 키워드 사용

DataFrame.columns는 DataFrame의 모든 컬럼 이름을 포함하고 있습니다. 이 속성을 활용하여 in 키워드와 함께 특정 컬럼이 존재하는지 여부를 확인할 수 있습니다. 이 방법은 첫 번째 방법과 매우 유사합니다.

# 'City' 컬럼이 존재하는지 확인
if 'City' in df.columns:
    print('컬럼이 존재합니다.')
else:
    print('컬럼이 존재하지 않습니다.')

 

3. hasattr 함수 사용

hasattr 함수는 객체가 특정 속성(또는 메서드)을 가지고 있는지 여부를 확인할 때 사용됩니다. 하지만 DataFrame의 컬럼을 직접적인 속성으로 확인하는 데는 적합하지 않으므로, 이 방법은 DataFrame 컬럼을 확인하는 데 권장되지 않습니다.

4. try-except 구문 사용

특정 컬럼에 접근하려고 할 때, 그 컬럼이 존재하지 않으면 KeyError가 발생합니다. 이를 이용하여 try-except 구문으로도 컬럼의 존재 여부를 확인할 수 있지만, 이 방법은 특정 작업을 시도하면서 동시에 컬럼의 존재 여부를 확인할 때 주로 사용됩니다. 컬럼 존재 여부만을 확인하기 위해 권장되는 방법은 아닙니다.

try:
    df['NonexistentColumn']
    print('컬럼이 존재합니다.')
except KeyError:
    print('컬럼이 존재하지 않습니다.')

 

일반적으로, in 키워드를 사용하는 방법이 가장 직관적이고 간단하여 널리 사용됩니다.

DataFrame에서 특정 행이 없는 경우에 대처하는 방법은 상황에 따라 다르게 접근할 수 있습니다. 여기에는 몇 가지 일반적인 상황과 해결책을 소개하겠습니다.

 

1. 특정 조건을 만족하는 행이 없는 경우 확인

pandas를 사용하여 특정 조건을 만족하는 행을 필터링할 때, 만약 해당 조건을 만족하는 행이 없다면 결과는 빈 DataFrame이 됩니다. 이 경우 .empty 속성을 사용하여 DataFrame이 비어 있는지 확인할 수 있습니다.

import pandas as pd

# 샘플 데이터 생성
data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
        'Age': [28, 34, 29, 32],
        'City': ['New York', 'Paris', 'Berlin', 'London']}
df = pd.DataFrame(data)

# 'Age'가 100 이상인 행 필터링
filtered_df = df[df['Age'] >= 100]

# 결과가 비어 있는지 확인
if filtered_df.empty:
    print('조건을 만족하는 행이 없습니다.')
else:
    print(filtered_df)

 

2. 특정 인덱스의 행이 존재하는지 확인

DataFrame에서 특정 인덱스의 행이 존재하는지 확인하려면, in 키워드를 사용하여 인덱스가 DataFrame의 인덱스 목록에 있는지 확인할 수 있습니다.

# 인덱스가 5인 행이 있는지 확인
if 5 in df.index:
    print('인덱스 5의 행이 존재합니다.')
else:
    print('인덱스 5의 행이 존재하지 않습니다.')

 

3. 특정 값이나 조건을 만족하는 행이 존재하는지 확인

any() 함수를 사용하여 DataFrame의 열에 대해 특정 조건을 만족하는 값이 하나라도 있는지 확인할 수 있습니다.

# 'City' 열에 'Seoul'이라는 값이 있는지 확인
if (df['City'] == 'Seoul').any():
    print('Seoul이 City 열에 존재합니다.')
else:
    print('Seoul이 City 열에 존재하지 않습니다.')

 

4. 특정 행이 없을 때 기본값 설정

DataFrame에서 특정 조건을 만족하는 행이 없을 때, 기본값을 설정하거나 대체하는 로직이 필요할 수 있습니다. 이 경우, 빈 DataFrame을 확인한 후 필요한 조치를 취할 수 있습니다.

예를 들어, 특정 조건을 만족하는 행이 없을 경우 새로운 행을 추가할 수 있습니다:

if filtered_df.empty:
    # 조건을 만족하는 행이 없으므로 새 행 추가
    new_row = {'Name': 'Default', 'Age': 0, 'City': 'Unknown'}
    df = df.append(new_row, ignore_index=True)
    print('새로운 행이 추가되었습니다.')
    print(df)

 

이러한 방법을 통해 DataFrame에서 특정 행이 없는 상황을 다룰 수 있으며, 상황에 따라 적절한 조치를 취할 수 있습니다.

Python에서 pandas 라이브러리를 사용하여 DataFrame의 특정 열(column) 값에 따라 데이터를 필터링하는 것은 매우 일반적인 작업입니다. 이를 위해 불리언 인덱싱(Boolean indexing)을 주로 사용합니다. 아래에서는 기본적인 예시를 통해 이 방법을 설명하겠습니다.

 

먼저, pandas가 설치되어 있어야 합니다. 설치되어 있지 않다면, 다음 명령어로 설치할 수 있습니다:

pip install pandas

 

이제, 예를 들어 DataFrame에서 특정 조건을 만족하는 행(row)만 필터링하는 방법을 살펴보겠습니다.

import pandas as pd

# 샘플 데이터 생성
data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
        'Age': [28, 34, 29, 32],
        'City': ['New York', 'Paris', 'Berlin', 'London']}

df = pd.DataFrame(data)

# 'Age'가 30 이상인 행만 필터링
filtered_df = df[df['Age'] >= 30]

print(filtered_df)

 

이 예시에서는 'Age' 열의 값이 30 이상인 행만 선택하여 filtered_df라는 새로운 DataFrame에 저장합니다.

또한, 여러 조건을 조합하여 필터링할 수도 있습니다. 예를 들어 'Age'가 30 이상이고, 'City'가 'Paris'인 행을 필터링하려면 다음과 같이 작성할 수 있습니다:

# 'Age'가 30 이상이고, 'City'가 'Paris'인 행 필터링
filtered_df = df[(df['Age'] >= 30) & (df['City'] == 'Paris')]

print(filtered_df)

 

이 때, 각 조건을 괄호로 묶고 & (AND) 연산자를 사용하여 두 조건을 모두 만족하는 행을 필터링합니다. 만약 조건 중 하나라도 만족하는 행을 찾고 싶다면, | (OR) 연산자를 사용할 수 있습니다.

이러한 방법을 통해 pandas에서 다양한 조건에 따라 데이터를 효과적으로 필터링할 수 있습니다.

Python에서 Excel 파일을 DataFrame으로 변환하기 위해 pandas 라이브러리를 주로 사용합니다. 이 과정은 매우 간단하며, pandas의 read_excel 함수를 이용하여 수행할 수 있습니다. 다만, Excel 파일을 읽기 위해서는 openpyxl (.xlsx 파일용) 또는 xlrd (.xls 파일용) 같은 추가 라이브러리가 필요할 수 있습니다. 최근 버전의 pandas에서는 .xlsx 파일을 읽기 위해 openpyxl을 추천합니다.

 

먼저 필요한 라이브러리를 설치해야 합니다. 아직 pandas와 openpyxl을 설치하지 않았다면, 다음 명령어를 통해 설치할 수 있습니다:

% pip install pandas openpyxl

# 설치확인
% pip list | grep openpyxl      
openpyxl                      3.0.10
%

 

그 후, Excel 파일을 DataFrame으로 변환하는 과정은 다음과 같습니다:

import pandas as pd

# Excel 파일 경로
file_path = 'path_to_your_excel_file.xlsx'

# Excel 파일을 DataFrame으로 읽기
df = pd.read_excel(file_path)

# DataFrame 확인
print(df)

 

read_excel 함수는 여러 매개변수를 제공하는데, 이를 통해 다양한 요구 사항에 맞게 Excel 파일을 읽을 수 있습니다. 예를 들어, 특정 시트를 읽거나, 열의 범위를 지정하거나, 특정 행을 헤더로 사용하는 등의 설정이 가능합니다.

특정 시트를 읽으려면 sheet_name 매개변수를 사용합니다:

# 'Sheet2'라는 이름의 시트를 읽기
df = pd.read_excel(file_path, sheet_name='Sheet2')

 

sheet_name에 시트의 인덱스를 전달할 수도 있으며, None을 전달하면 모든 시트를 사전 형태로 읽어옵니다.

헤더가 없는 Excel 파일을 읽으려면, header=None을 설정합니다:

# 헤더가 없는 Excel 파일을 읽기
df = pd.read_excel(file_path, header=None)

 

특정 컬럼만 읽으려면 usecols 매개변수에 열 이름이나 열 번호의 범위를 지정합니다:

# A열과 C열만 읽기
df = pd.read_excel(file_path, usecols='A,C')
# 또는 열 번호로 지정(0부터 시작)
df = pd.read_excel(file_path, usecols=[0, 2])

 

이러한 방법을 통해 Python에서 Excel 파일을 쉽게 DataFrame으로 변환하고, pandas를 활용하여 다양한 데이터 분석 작업을 수행할 수 있습니다.

파이썬에서 특정 디렉토리와 그 하위 디렉토리를 포함하여 모든 Excel 파일(예: .xlsx, .xls)을 찾으려면 os 모듈과 glob 모듈을 사용할 수 있습니다. 여기에서는 두 가지 방법을 소개합니다: os 모듈의 walk() 함수를 사용하는 방법과 pathlib 모듈의 Path.rglob() 메서드를 사용하는 방법입니다.

 

첫번째, os.walk()를 사용하는 방법

import os

def find_excel_files(root_dir):
    excel_files = []
    for dirpath, dirnames, filenames in os.walk(root_dir):
        for filename in filenames:
            if filename.endswith(('.xlsx', '.xls')):
                excel_files.append(os.path.join(dirpath, filename))
    return excel_files

# 사용 예
root_directory = 'your_directory_path_here'
excel_files = find_excel_files(root_directory)
for file in excel_files:
    print(file)

 

이 코드는 지정된 루트 디렉토리(root_directory)와 그 하위 디렉토리를 모두 탐색하여 .xlsx 또는 .xls 확장자를 가진 파일의 전체 경로를 리스트로 반환합니다.

 

두번째, pathlib.Path.rglob()를 사용하는 방법

pathlib은 Python 3.4 이상에서 사용할 수 있으며, 파일 시스템 경로를 객체 지향적으로 쉽게 다룰 수 있게 해 줍니다.

from pathlib import Path

def find_excel_files(root_dir):
    excel_files = list(Path(root_dir).rglob('*.xlsx')) + list(Path(root_dir).rglob('*.xls'))
    return [str(file) for file in excel_files]

# 사용 예
root_directory = 'your_directory_path_here'
excel_files = find_excel_files(root_directory)
for file in excel_files:
    print(file)

 

rglob() 메서드는 지정된 패턴과 일치하는 모든 파일의 경로를 재귀적으로 검색합니다. 이 예제에서는 *.xlsx와 *.xls 패턴을 사용하여 Excel 파일을 찾습니다.

두 방법 모두 지정된 디렉토리와 그 하위 디렉토리에서 Excel 파일을 찾는 데 사용할 수 있으며, 사용자의 필요와 선호도에 따라 선택할 수 있습니다.

 

< 참조 >

https://zephyrus1111.tistory.com/460

 

파이썬(Python) 파일과 폴더(디렉토리) 탐색하기 (feat. glob)

파이썬(Python)의 내장 모듈인 glob을 이용하면 파일명의 패턴을 이용하여 특정 폴더와 그 하위에 있는 파일을 찾아낼 수 있다. 이번 포스팅에서는 glob 모듈을 이용하여 특정 패턴을 갖는 파일과 폴

zephyrus1111.tistory.com

https://nck2.github.io/%EC%97%85%EB%AC%B4%EC%9E%90%EB%8F%99%ED%99%94/excelpython/

 

Python으로 특정폴더 내 파일이름 읽기 및 엑셀 내용 읽기

요구사항 파이썬으로 특정폴더안의 파일 이름을 읽는다. 또한 특정 파일의 시트이름을 읽는다. 내용을 읽어와 pandas의 객체로 반환한다.

nck2.github.io

https://dataleader.tistory.com/24

 

[파이썬(python) 이야기 4화] 폴더 내 파일 검색하기, 폴더 내 파일 정보 데이터 프레임으로 저장하

0. 폴더 검색? 프로그램을 개발할 때 종종 폴더를 검색해 파일을 수정하는 경우가 발생합니다. 그러나 파일이 하나일 경우에는 크게 문제가 없지만, 파일이 여러 개일 경우 어떻게 해야할 까요?

dataleader.tistory.com

https://mingchin.tistory.com/168

 

[파이썬/Python] 모든 하위 디렉토리 탐색, 특정 확장자 찾기

특정 경로에 존재하는 모든 하위 디렉토리를 탐색하며 원하는 파일을 찾고자 하는 때가 있다. 이때 활용할 수 있는 것이 os.walk 또는 glob.glob이다. import os for (path, dir, files) in os.walk("D:/"): for filename

mingchin.tistory.com

 

+ Recent posts