簡體   English   中英

您如何使用Python將格式化的“上周”轉換為日期?

[英]How do you convert formatted 'epi-week' to date using Python?

我目前正在嘗試學習如何將通過Coursera和Dataquest學習的數據科學技能應用於小小的個人項目。

我在美國衛生和公共服務部的Google BigQuery上找到了一個數據集,其中包含1888年至2013年之間發布的所有美國所有城市和州的全國應通報疾病的每周監測報告。

我將數據導出到一個.csv文件,並將其導入到我通過Anaconda運行的Jupyter筆記本中。 查看數據集的標題后,我注意到日期/星期顯示為“ epi_week”。

我試圖使數據更具可讀性和可用性,以便進行某些分析,為此,我希望將其轉換為DD / MM / YYYY或Week / Month / Year等格式。

我做了一些研究,顯然Epi-week也被稱為CDC周,到目前為止,我發現了python 3的擴展/程序包,稱為“ epiweeks”。

使用Epiweeks包,我可以將一些“正常”日期轉換為包創建者指的某種Epi周形式,但它們看起來與我在數據集中看到的東西完全不同。


例如,如果我使用今天的日期,即2019年5月24日(24/05/2019),則輸出為:“ 2019年第21周”,但這是數據中的前四個條目(並采用相同的格式,其他所有)如下所示:

epi_week

'197006'

'197007'

'197008'

'197012'


In [1]: disease_header

Out [1]: 
[['epi_week', 'state', 'loc', 'loc_type', 'disease', 'cases', 'incidence_per_100000']]

In [2]: disease[:4]

Out [2]:
[['197006', 'AK', 'ALASKA', 'STATE', 'MUMPS', '0', '0'],
['197007', 'AK', 'ALASKA', 'STATE', 'MUMPS', '0', '0'],
['197008', 'AK', 'ALASKA', 'STATE', 'MUMPS', '0', '0'],
['197012', 'AK', 'ALASKA', 'STATE', 'MUMPS', '0', '0']]

Epiweeks軟件包的開發旨在解決您在此處遇到的問題。

使用您提供的示例數據,讓我們創建一個具有星期結束日期的新列:

import pandas as pd
from epiweeks import Week

columns = ['epi_week', 'state', 'loc', 'loc_type',
           'disease', 'cases', 'incidence_per_100000']
data = [
    ['197006', 'AK', 'ALASKA', 'STATE', 'MUMPS', '0', '0'],
    ['197007', 'AK', 'ALASKA', 'STATE', 'MUMPS', '0', '0'],
    ['197008', 'AK', 'ALASKA', 'STATE', 'MUMPS', '0', '0'],
    ['197012', 'AK', 'ALASKA', 'STATE', 'MUMPS', '0', '0']
]

df = pd.DataFrame(data, columns=columns)

# Now create a new column with week ending date in ISO format
df['week_ending'] = df['epi_week'].apply(lambda x: Week.fromstring(x).enddate())

結果如下:

在此處輸入圖片說明

我建議您查看Epiweeks軟件包文檔以獲取更多示例。

如果只需要有年和周列,則可以不使用epiweeks包來完成:

df['year'] = df['epi_week'].apply(lambda x: int(x[:4]))
df['week'] = df['epi_week'].apply(lambda x: int(x[4:6]))

結果如下:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM