roberthsu2003 / __2024_04_17_mon_wed__

Python與AI人工智慧開發入門
25 stars 4 forks source link

請將lesson19資料夾內的人口密度資料夾內的csv組合成為一個DataFrame #29

Open roberthsu2003 opened 1 week ago

roberthsu2003 commented 1 week ago
截圖 2024-06-24 晚上9 44 48
chesterXalan commented 1 week ago
import pandas as pd
import os

def make_data_frame(file_path: str) -> pd.DataFrame:
    df = pd.read_csv(file_path)
    df.columns = df.iloc[0]
    df1 = df.drop(0).dropna()
    df2 = df1.set_index('區域別')

    return df2

dir_ = '人口密度'
dfs = []

for file in os.listdir(dir_):
    dfs.append(make_data_frame(f'{dir_}/{file}'))

pd.concat(dfs)

image

Cheney-Hsieh commented 1 week ago
import json
import pandas as pd
import os
from pandas import DataFrame
def data_merge(source_path:str,second:DataFrame)->DataFrame:
    pop_density = pd.read_csv(source_path)
    pop_density.columns = ['統計年','區域別','年底人口數','土地面積','人口密度']
    pop_density.columns = pop_density.iloc[0].values.tolist()
    pop_1 = pd.merge(pop_density,second)
    pop_1 = pop_density.drop(index=[0])
    pop_1.dropna(inplace= True)
    return pop_1

merges= []
info_df1= pd.DataFrame(columns = ['統計年','區域別','年底人口數','土地面積','人口密度'])

for file_name in os.listdir('人口密度'):
     if 'opendata' in file_name:
         merges.append(data_merge(os.path.abspath(f'人口密度/{file_name}'),info_df1))

df2 = pd.concat(merges,ignore_index=True)
df2.set_index('區域別',inplace=True)
df2.sort_values(['區域別','統計年'],ascending=True,inplace=True)
df2   

image

Tony840705 commented 1 week ago
import os
import pandas as pd
from pandas import DataFrame

def data_merge(source_path:str,second:DataFrame)->DataFrame:
    pop_density = pd.read_csv(source_path)
    pop_density.columns = ['統計年','區域別','年底人口數','土地面積','人口密度']
    pop_density.columns = pop_density.iloc[0].values.tolist()
    pop_1 = pd.merge(pop_density,second)
    pop_1 = pop_density.drop(index=[0])
    pop_1.dropna(inplace= True)
    return pop_1

merges= []
info_df1= pd.DataFrame(columns = ['統計年','區域別','年底人口數','土地面積','人口密度'])

for file_name in os.listdir('人口密度'):
     if 'opendata' in file_name:
         merges.append(data_merge(os.path.abspath(f'人口密度/{file_name}'),info_df1))

df2 = pd.concat(merges,ignore_index=True)
df2.set_index('區域別',inplace=True)
df2.sort_values(['區域別','統計年'],ascending=True,inplace=True)
df2

HW

chiayuben commented 1 week ago
import json
import pandas as pd
from pandas import DataFrame
import os

def value_to_int(value:str)->int:
    try:
        return int(value)
    except ValueError:
        return 0

def data_merge(sourse_path:str)->DataFrame:
    people_df=pd.read_csv(sourse_path)
    people_df.columns=people_df.iloc[0]
    people_df1=people_df.drop(index=[0]).dropna()
    people_df2=people_df1.set_index('區域別')
    people_df2['年底人口數']=people_df2['年底人口數'].map(value_to_int) 
    people_df2['人口密度']=people_df2['人口密度'].map(value_to_int)
    return  people_df2

merges=[]
for file_name in os.listdir('人口密度') :
    if 'opendata' in file_name:
        merges.append(data_merge(os.path.abspath(f'人口密度/{file_name}')))

pd.concat(merges)

image

PercJK commented 1 week ago
import os
import pandas as pd
from pandas import DataFrame

def data_merge(source_path:str,second:DataFrame)->DataFrame:
    pop_density = pd.read_csv(source_path)
    pop_density.columns = ['統計年','區域別','年底人口數','土地面積','人口密度']
    pop_density.columns = pop_density.iloc[0].values.tolist()
    pop_1 = pd.merge(pop_density,second)
    pop_1 = pop_density.drop(index=[0])
    pop_1.dropna(inplace= True)
    return pop_1

merges= []
info_df1= pd.DataFrame(columns = ['統計年','區域別','年底人口數','土地面積','人口密度'])

for file_name in os.listdir('人口密度'):
     if 'opendata' in file_name:
         merges.append(data_merge(os.path.abspath(f'人口密度/{file_name}'),info_df1))

df2 = pd.concat(merges,ignore_index=True)
df2.set_index('區域別',inplace=True)
df2.sort_values(['區域別','統計年'],ascending=True,inplace=True)
df2

螢幕擷取畫面 2024-06-26 135112

chihweihan commented 1 week ago
import os
from pandas import DataFrame
import pandas as pd
def data_merge(source_path:str) -> DataFrame:
    people_df1 = pd.read_csv(source_path)
    people_df1.columns = people_df1.iloc[0].values.tolist()
    people_df2 = people_df1.drop(index=[0]).dropna()
    index = people_df2.set_index('區域別')
    return index

merges = []
for file_name in os.listdir('人口密度'):
    merges.append(data_merge(f'人口密度/{file_name}'))

mergedata = pd.concat(merges)
mergedata.sort_values(['區域別','統計年'],ascending=True,inplace=True)
mergedata

image