roberthsu2003 / __2024_04_17_mon_wed__

Python與AI人工智慧開發入門
24 stars 5 forks source link

不確定作業內容嘗試統計台北市youbike各行政區的統計資料。 #33

Open chiayuben opened 3 months ago

chiayuben commented 3 months ago
import requests
from requests import Response
from pydantic import BaseModel,Field,field_validator,RootModel
import pandas as pd

youbike_url:Response= requests.get('https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json')
if youbike_url.status_code == 200:
    pass
else:
    print("下載失敗")

class Site (BaseModel):
    行政區域:str = Field(alias='sarea')
    總數量:int = Field(alias='total')
    可借數量:int = Field(alias='available_rent_bikes') 
    可還數量:int = Field(alias='available_return_bikes')

    @field_validator('可借數量','可還數量',mode='before')
    @classmethod
    def whitespace_to_zero(cls, value: str) -> str:
        return '0.0' if value == '' else value

class Youbike(RootModel):
    root:list[Site]

data = Youbike.model_validate_json(youbike_url.text)
all_sites = data.model_dump()

df = pd.DataFrame(all_sites)
df1=df.set_index(keys='行政區域')
df1_sum=df1.groupby(level='行政區域').sum()
df1_sum

image

chesterXalan commented 3 months ago
import requests
import pandas as pd
from pydantic import BaseModel, Field, RootModel

youbike_url = 'https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json'
res = requests.get(youbike_url)

if res.status_code == 200:
    print('下載成功')
else:
    print('下載失敗')

class Site(BaseModel):
    區域: str = Field(alias='sarea')
    總數: int = Field(alias='total')
    可借: int = Field(alias='available_rent_bikes')
    可還: int = Field(alias='available_return_bikes')

class YouBike(RootModel):
    root: list[Site]

data: YouBike = YouBike.model_validate_json(res.text)
all_sites: list[dict] = data.model_dump()

df_sites = pd.DataFrame(all_sites)
df_sites.groupby(by='區域')[['總數', '可借', '可還']].sum()

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

Tony840705 commented 3 months ago
import requests
from requests import Response
from pydantic import BaseModel,Field,field_validator,RootModel
import pandas as pd

youbike_url:Response= requests.get('https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json')
if youbike_url.status_code == 200:
    pass
else:
    print("下載失敗")

class Site (BaseModel):
    行政區域:str = Field(alias='sarea')
    總數量:int = Field(alias='total')
    可借數量:int = Field(alias='available_rent_bikes') 
    可還數量:int = Field(alias='available_return_bikes')

    @field_validator('可借數量','可還數量',mode='before')
    @classmethod
    def whitespace_to_zero(cls, value: str) -> str:
        return '0.0' if value == '' else value

class Youbike(RootModel):
    root:list[Site]

data = Youbike.model_validate_json(youbike_url.text)
all_sites = data.model_dump()

df = pd.DataFrame(all_sites)
df1=df.set_index(keys='行政區域')
df1_sum=df1.groupby(level='行政區域').sum()
df1_sum

HW