ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전처리 데이터로 그래프 만들기 2
    pandas 2024. 11. 25. 09:18

    1. 파일 이름 가져오기

    Python의 os 모듈을 사용해 파일 이름을 가져올 수 있습니다.

    import os
    import pandas as pd
    
    # 파일 경로 설정
    file_path = "data/sample_file.csv"
    
    # 파일 이름만 추출
    file_name = os.path.basename(file_path).split('.')[0]

     

    2. 데이터 읽기 및 파일 이름 컬럼 추가

    파일에서 데이터를 읽어온 뒤, 컬럼으로 파일 이름을 추가합니다.

    # CSV 파일 읽기
    df = pd.read_csv(file_path)
    
    # 파일 이름을 새로운 컬럼으로 추가
    df["file_name"] = file_name
    
    print(df)

     

    3. 여러 파일 처리하기 (딕셔너리 활용)

    여러 파일을 처리하면서 파일 이름을 Key로 사용하려면 딕셔너리를 활용할 수 있습니다.

    # 파일 리스트 (예시)
    file_list = ["data/file1.csv", "data/file2.csv"]
    
    # 파일 이름을 Key로 사용하는 딕셔너리 생성
    dataframes = {}
    
    for file in file_list:
        file_name = os.path.basename(file).split('.')[0]
        dataframes[file_name] = pd.read_csv(file)
    
    # 딕셔너리 사용 예시
    for key, df in dataframes.items():
        print(f"Data from {key}:")
        print(df.head())

     

    4. 데이터프레임에 파일 이름 컬럼을 추가하면서 병합

    모든 데이터를 하나의 데이터프레임으로 병합하려면 아래처럼 처리할 수 있습니다.

    all_data = []
    
    for file in file_list:
        file_name = os.path.basename(file).split('.')[0]
        df = pd.read_csv(file)
        df["file_name"] = file_name
        all_data.append(df)
    
    # 병합된 데이터프레임 생성
    merged_df = pd.concat(all_data, ignore_index=True)
    
    print(merged_df)

     

    요약

    • os.path.basename: 파일 이름 추출
    • split(): 확장자 제거
    • pd.concat: 데이터프레임 병합
    • 딕셔너리: 여러 파일을 Key-Value 구조로 관리

    이 방법을 활용하면 파일 이름을 Key로 데이터프레임을 관리하거나 컬럼으로 추가할 수 있습니다. 필요한 방식에 따라 코드를 수정하면 됩니다.

     

     

    1. merge()로 중복된 값을 병합

    merge()는 두 데이터프레임을 특정 키(열)를 기준으로 병합합니다.

    • 중복된 키가 있다면 Cartesian Product(모든 조합)를 생성합니다.
    • 필요에 따라 중복 값을 병합하거나 다르게 처리할 수 있습니다.
    import pandas as pd
    
    df1 = pd.DataFrame({
        "ID": [1, 2, 3],
        "Name": ["Alice", "Bob", "Charlie"]
    })
    
    df2 = pd.DataFrame({
        "ID": [1, 1, 2],
        "Value": [100, 200, 300]
    })
    
    # 'ID'를 기준으로 병합
    merged_df = pd.merge(df1, df2, on="ID", how="inner")
    
    print(merged_df)

     

Designed by Tistory.