有人問(wèn)我如何用python實(shí)現(xiàn)字符串轉(zhuǎn)日期诅福?我用Jupyter Notebook回答他的~

本次內(nèi)容用到的python編輯器是anconda下的jupyter notebook

所以在本次內(nèi)容開(kāi)始之前給大家介紹如何在Windows下加載jupyter notebook進(jìn)行python的調(diào)試~~~~

1忧饭、什么是Jupyter Notebook

Jupyter Notebook,又稱為IPython notebook,是一個(gè)交互式筆記本视卢,支持運(yùn)行40+種編程語(yǔ)言,可以用來(lái)編寫(xiě)漂亮的交互式文檔嘉裤。

你要向別人解釋你的程序郑临, 你可能要新建一個(gè)word,把代碼復(fù)制進(jìn)去屑宠, 對(duì)每塊代碼進(jìn)行講解厢洞。 這樣會(huì)有幾個(gè)問(wèn)題:

  1. 代碼格式不好看;
  2. 代碼的配色丟失典奉;
  3. 代碼與文字解釋部分區(qū)分不明顯躺翻。

使用Jupyter Notebook,可以讓代碼保持其在編輯器里面的格式卫玖,看起來(lái)很正規(guī)公你。 而且, 復(fù)制進(jìn)去的代碼是可以運(yùn)行的假瞬。

敲擊完代碼之后陕靠,按Shift+Enter, 或者上面的Run Cell鍵變可以得到代碼運(yùn)行結(jié)果脱茉。

2懦傍、 Windows下安裝及使用Jupyter Notebook

2.1 安裝Jupyter Notebook

打開(kāi)windows命令窗口cmd,在沒(méi)有安裝Jupyter Notebook芦劣,在命令行輸入Jupyter Notebook會(huì)報(bào)錯(cuò)粗俱,如下:

image

輸入如下命令,下載jupyter notebook

image

經(jīng)過(guò)一段時(shí)間后會(huì)顯示下載成功虚吟,如下:


image

打開(kāi)windows命令窗口cmd寸认,輸入命令打開(kāi)jupyter notebook


image

待以上保持不動(dòng)后,瀏覽器就會(huì)打開(kāi)一個(gè)頁(yè)面串慰,如下圖:
在這里插入圖片描述

此時(shí)偏塞,我們就在這里創(chuàng)建文件,編寫(xiě)我們的代碼

注意:我們打開(kāi)的windows命令窗口cmd不要關(guān)閉哦邦鲫!

2.2 創(chuàng)建ipynb文件

  1. 選擇右上角的new灸叼,選擇python3
在這里插入圖片描述
  1. 進(jìn)入代碼編寫(xiě)環(huán)境,如下圖:
image

3庆捺、利用pd的date_range生成日期數(shù)據(jù)

import pandas as pd
pd.date_range( )

同生成隨機(jī)數(shù)的思想類似古今,使用pandas庫(kù)中的函數(shù)

pd.date_range(start=None,end=None滔以,periods=None捉腥,freq=None,tz=None你画,normalize=False抵碟,name=None桃漾,close=None,**kwargs)

3.1 設(shè)定開(kāi)始時(shí)間拟逮、長(zhǎng)度撬统、頻率

start_date='20210101'
length=10
date_1=pd.date_range(start=start_date,periods=10).tolist()  #默認(rèn)freq為D,每天
date_1
image.png

也可以設(shè)置頻率freq=‘M'

date_1=pd.date_range(start=start_date,periods=10,freq='M')
date_1
image.png

3.2 設(shè)定起始敦迄、終止時(shí)間宪摧、頻率

start_date='20210101'
end_date='20210110'
date_2=pd.date_range(start=start_date,end=end_date,freq='D')  #默認(rèn)為D
date_2
image.png

頻率freq的設(shè)置有:

D --- Day --- 每日
B --- BusinessDay --- 每工作日
H --- Hour --- 每小時(shí)
T/min --- Minute ---每分鐘
S --- Second --- 每秒
M --- MonthEnd --- 每月最后一個(gè)日歷日
Q --- Quater --- 每季度

注意上面生成的日期數(shù)據(jù),就是list格式颅崩,在構(gòu)建數(shù)據(jù)框時(shí)可以直接用。

pd.DataFrame({'Time':date_1})
image.png

4蕊苗、字符串轉(zhuǎn)化為日期

導(dǎo)入數(shù)據(jù)時(shí)常會(huì)出現(xiàn)沿后,日期型數(shù)據(jù)導(dǎo)入后,變成字符串格式朽砰,在后續(xù)使用時(shí)尖滚,需要轉(zhuǎn)化為日期。

構(gòu)造一個(gè)時(shí)間數(shù)據(jù)

import numpy as np
start_date='20210613'
gap=100

date_list1=pd.date_range(start=start_date,periods=gap).strftime('%Y%m%d').tolist()
print(date_list1[1:10])
print(len(date_list1))
image.png
num1=np.random.randint(1,101,100)   #生成1-101的隨機(jī)整數(shù)
num2=np.random.randint(100,201,100)
df_temp=pd.DataFrame({'Time':date_list1,
                     'Number1':num1,
                     'Number2':num2})
df_temp.head()

image.png

上面數(shù)據(jù)構(gòu)造時(shí)瞧柔,為了方便之后舉例子漆弄,將生成的時(shí)間數(shù)據(jù)轉(zhuǎn)化為字符串后,構(gòu)造的數(shù)據(jù)框造锅。

4.1 pd.to_datetime()

print(df_temp['Time'].dtype)
print(pd.to_datetime(df_temp['Time']).dtype)

輸出:

object
datetime64[ns]

pd.datetime這個(gè)函數(shù)可以直接作用在數(shù)據(jù)框的列上面撼唾,直接轉(zhuǎn)換。

4.2 datetime.strptime

注意區(qū)分:

from datetime import datetime
datetime.strftime() #由日期格式轉(zhuǎn)化為字符串
datetime.strptime()  #由字符串格式轉(zhuǎn)化為日期

例子:

from datetime import datetime
print(datetime.strptime('20210101','%Y%m%d'))
print(datetime.strptime('2021-01-01','%Y-%m-%d'))
image.png

但是這個(gè)函數(shù)只能作用一個(gè)值哥蔚,如果對(duì)數(shù)據(jù)框的列進(jìn)行操作倒谷,需要首先定義一個(gè)函數(shù):

from datetime import datetime
def date_ch(value):
    return datetime.strptime(value,'%Y%m%d')
 
print(date_ch('20210613'))
df_temp['Time']=df_temp['Time'].apply(date_ch)
df_temp['Time']
image.png

5、從日期數(shù)據(jù)中提取成分

5.1 直接提取:

pd.to_datetime('20210613').month

#year:日
#month:月
#week:周
#day:日
image.png

5.2 使用strftime函數(shù):

pd.to_datetime('20210613').strftime('%Y-%m')
image.png

5.3 字符串切片截取

數(shù)據(jù)如下:

image.png
def date_ch(value):
    str_value=value.strftime('%Y-%m-%d')
    month=str_value[5:7]
    return month
df_temp['Time'].apply(date_ch)
#或者
#df_temp['Time'].apply(lambda x:date_ch(x))
image.png

strftime函數(shù)提取日期成分中糙箍,日期的標(biāo)準(zhǔn)化格式符號(hào):

%a  星期的簡(jiǎn)寫(xiě)渤愁。如 星期三為Web
%A  星期的全寫(xiě)。如 星期三為Wednesday
%b  月份的簡(jiǎn)寫(xiě)深夯。如4月份為Apr
%B  月份的全寫(xiě)抖格。如4月份為April 
%c:  日期時(shí)間的字符串表示。(如: 05/01/10 09:00:20)
%d:  日在這個(gè)月中的天數(shù)
%f:  微秒(范圍[0,999999])
%H:  小時(shí)(24小時(shí)制咕晋,[0, 23])
%I:  小時(shí)(12小時(shí)制雹拄,[0, 11])
%j:  日在年中的天數(shù) [001,366]
%m:  月份([01,12])
%M:  分鐘([00,59])
%p:  AM或者PM
%S:  秒(范圍為[00,61])
%U:  周在當(dāng)年的周數(shù)當(dāng)年的第幾周),星期天作為周的第一天
%w:  今天在這周的天數(shù)掌呜,范圍為[0, 6]办桨,6表示星期天
%W:  周在當(dāng)年的周數(shù),星期一作為周的第一天
%x:  日期字符串(如:05/01/20)
%X:  時(shí)間字符串(如:09:00:20)
%y:  2個(gè)數(shù)字表示的年份
%Y:  4個(gè)數(shù)字表示的年份
%z:  與utc時(shí)間的間隔 (如果是本地時(shí)間站辉,返回空字符串)
%Z:  時(shí)區(qū)名稱(如果是本地時(shí)間呢撞,返回空字符串)

6损姜、python將任何格式的時(shí)間字符串轉(zhuǎn)換為datetime

首先利用pip下載python資源包:pip install python-dateutil


from dateutil.parser import parse

date_string_array = [
    '2021-06-13 08:15:27.243860',
    'Jun 13 2021  7:40AM',
    'Jun 13 2021 at 7:40AM',
    'September 20, 2020, 22:19:55',
    'Sun, 05/12/1999, 12:30PM',
    'Mon, 21 March, 2015',
    '2018-03-12T10:12:45Z',
    '2018-06-29 17:08:00.586525+00:00',
    '2018-06-29 17:08:00.586525+05:00',
    'Tuesday , 6th September, 2017 at 4:30pm'
]

for date in date_string_array:
    print('Parsing: ' + date)
    dt = parse(date)  # 時(shí)間轉(zhuǎn)換
    print(dt.date())
    print(dt.time())
    print(dt.tzinfo)
    print('\n')
image.png
image.png
image.png

7、「?? 感謝大家」

  • 點(diǎn)贊支持下吧殊霞,讓更多的人也能看到這篇內(nèi)容(收藏不點(diǎn)贊摧阅,都是耍流氓 -_-)
  • 歡迎在留言區(qū)與我分享你的想法,也歡迎你在留言區(qū)記錄你的思考過(guò)程
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绷蹲,一起剝皮案震驚了整個(gè)濱河市棒卷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祝钢,老刑警劉巖比规,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拦英,居然都是意外死亡蜒什,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門疤估,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)灾常,“玉大人,你說(shuō)我怎么就攤上這事铃拇〕伲” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵慷荔,是天一觀的道長(zhǎng)雕什。 經(jīng)常有香客問(wèn)我,道長(zhǎng)显晶,這世上最難降的妖魔是什么监徘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮吧碾,結(jié)果婚禮上凰盔,老公的妹妹穿的比我還像新娘。我一直安慰自己倦春,他們只是感情好户敬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著睁本,像睡著了一般尿庐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呢堰,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天抄瑟,我揣著相機(jī)與錄音,去河邊找鬼枉疼。 笑死皮假,一個(gè)胖子當(dāng)著我的面吹牛鞋拟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惹资,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贺纲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了褪测?” 一聲冷哼從身側(cè)響起猴誊,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侮措,沒(méi)想到半個(gè)月后懈叹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡分扎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年澄成,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笆包。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖略荡,靈堂內(nèi)的尸體忽然破棺而出庵佣,到底是詐尸還是另有隱情,我是刑警寧澤汛兜,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布巴粪,位于F島的核電站,受9級(jí)特大地震影響粥谬,放射性物質(zhì)發(fā)生泄漏肛根。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一漏策、第九天 我趴在偏房一處隱蔽的房頂上張望派哲。 院中可真熱鬧,春花似錦掺喻、人聲如沸芭届。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)褂乍。三九已至,卻和暖如春即硼,著一層夾襖步出監(jiān)牢的瞬間逃片,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工只酥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留褥实,地道東北人呀狼。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像性锭,于是被迫代替她去往敵國(guó)和親赠潦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容