溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

發(fā)布時(shí)間:2022-06-14 14:57:06 來源:億速云 閱讀:149 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“python Pandas時(shí)序數(shù)據(jù)處理的方法有哪些”,在日常操作中,相信很多人在python Pandas時(shí)序數(shù)據(jù)處理的方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”python Pandas時(shí)序數(shù)據(jù)處理的方法有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

Python中時(shí)間的一些常用操作

import time
# 從格林威治時(shí)間到現(xiàn)在,單位秒
print('系統(tǒng)時(shí)間戳:', time.time())
print('本地時(shí)間按格式轉(zhuǎn)成str:', time.strftime('%Y-%m-%d %X', time.localtime()))
# 無參的localtime返回time.struct_time格式的時(shí)間,是本地時(shí)區(qū)的時(shí)間
print('無參localtime:', time.localtime())
print('本時(shí)區(qū)時(shí)間轉(zhuǎn)成時(shí)間戳:', time.mktime(time.localtime()))
# 將時(shí)間戳轉(zhuǎn)換為能讀懂的時(shí)間
print('時(shí)間戳轉(zhuǎn)時(shí)間:', time.strftime('%Y-%m-%d %X', time.localtime(time.time())))

運(yùn)行結(jié)果:

系統(tǒng)時(shí)間戳: 1542188096.1592166
本地時(shí)間按格式轉(zhuǎn)成str: 2018-11-14 17:34:56
無參localtime: time.struct_time(tm_year=2018, tm_mon=11, tm_mday=14, tm_hour=17, tm_min=34, tm_sec=56, tm_wday=2, tm_yday=318, tm_isdst=0)
本時(shí)區(qū)時(shí)間轉(zhuǎn)成時(shí)間戳: 1542188096.0
時(shí)間戳轉(zhuǎn)時(shí)間: 2018-11-14 17:34:56

Pandas時(shí)間序列(DatetimeIndex)與時(shí)序數(shù)據(jù)

時(shí)間序列在Series對(duì)象中且作為索引存在時(shí),就構(gòu)成了時(shí)序數(shù)據(jù)。

import datetime
import numpy as np
import pandas as pd
# pd.date_range()函數(shù)用于創(chuàng)建一個(gè)Pandas時(shí)間序列DatetimeIndex
# start參數(shù)(也是第一個(gè)參數(shù))傳入一個(gè)str格式的開始時(shí)間,也可以傳入一個(gè)datetime對(duì)象
# 這里用datetime.datetime()創(chuàng)建了一個(gè)datetime對(duì)象,只用了前三個(gè)參數(shù)也就是年月日
# pd.date_range()函數(shù)可以指明end表示時(shí)間序列的結(jié)尾時(shí)間
# 這里用periods參數(shù)指明序列中要生成的時(shí)間的個(gè)數(shù),freq='D'指定為每天(Day)生成一個(gè)時(shí)間
dti = pd.date_range(start=datetime.datetime(2018, 11, 14), periods=18, freq='D')
print(dti, '\n', '*' * 40, sep='')
# 將時(shí)間序列放在Series對(duì)象中作為索引,這里freq='W'表示隔一周生成一個(gè)
s_dti = pd.Series(np.arange(6), index=pd.date_range('2018/11/4', periods=6, freq='W'))
print(s_dti.head(), '\n', '*' * 40, sep='')
# 取時(shí)序數(shù)據(jù)中指定時(shí)間的內(nèi)容
print(s_dti['2018-11-25'], '\n', '*' * 40, sep='')
# 取第二個(gè)索引對(duì)應(yīng)的時(shí)間的年月日
print(s_dti.index[2].year, s_dti.index[2].month, s_dti.index[2].day, '\n', '*' * 40, sep='')

運(yùn)行結(jié)果:

DatetimeIndex(['2018-11-14', '2018-11-15', '2018-11-16', '2018-11-17',
               '2018-11-18', '2018-11-19', '2018-11-20', '2018-11-21',
               '2018-11-22', '2018-11-23', '2018-11-24', '2018-11-25',
               '2018-11-26', '2018-11-27', '2018-11-28', '2018-11-29',
               '2018-11-30', '2018-12-01'],
              dtype='datetime64[ns]', freq='D')
****************************************
2018-11-04    0
2018-11-11    1
2018-11-18    2
2018-11-25    3
2018-12-02    4
Freq: W-SUN, dtype: int32
****************************************
3
****************************************
20181118
****************************************

杭州天氣的時(shí)序處理

import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
df = pd.read_csv('E:/Data/practice/hz_weather.csv')
df = df[['日期', '最高氣溫', '最低氣溫']]
# print(df.head())

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

print(type(df.日期))  # <class 'pandas.core.series.Series'>
print(type(df.日期.values))  # <class 'numpy.ndarray'>

# 修改日期格式
# 注意,df.日期得到的是Series對(duì)象,df.日期.values得到的是ndarray多維數(shù)組
# pd.to_datetime()函數(shù)將輸入解析成時(shí)間對(duì)象的格式并返回
# format參數(shù)指定解析的方式
# 當(dāng)輸入列表形式的值時(shí),返回DatetimeIndex;當(dāng)輸入Series時(shí),返回Series;當(dāng)輸入常量時(shí),返回Timestamp
print(type(pd.to_datetime(df.日期.values, format="%Y-%m-%d")))  # <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
print(type(pd.to_datetime(df.日期, format="%Y-%m-%d")))  # <class 'pandas.core.series.Series'>
df.日期 = pd.to_datetime(df.日期.values, format="%Y-%m-%d")
# print(df.head())

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

# 將日期設(shè)置為索引
df = df.set_index('日期')
# 取出第0個(gè)索引值對(duì)應(yīng)的日期
print(df.index[0])  # 2017-01-01 00:00:00
# DatetimeIndex里存的是一個(gè)個(gè)的Timestamp,查看一下類型
print(type(df.index[0]))  # <class 'pandas._libs.tslibs.timestamps.Timestamp'>
# print(df.info())

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

# 提取1月份的溫度數(shù)據(jù)
df_jan = df[(df.index >= "2017-1-1") & (df.index < "2017-2-1")]
# 或用這種方式也可以
df_jan = df["2017-1-1":"2017-1-31"]
# print(df_jan.info())

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

# 只取到月份
df_m = df.to_period('M')
# print(df_m.head())

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

# 利用上面的只取到月份,對(duì)level=0(即索引層級(jí))做聚合就可以求月內(nèi)的平均值等
s_m_mean = df_m.groupby(level=0).mean()
# print(s_m_mean.head())

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

# 繪制[最高溫度]和[最低溫度]兩個(gè)指標(biāo)隨著索引[時(shí)間]變化的圖
fig, ax = plt.subplots(1, 1, figsize=(12, 4))
df.plot(ax=ax)
plt.show()

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

附:matplotlib中文支持

python?Pandas時(shí)序數(shù)據(jù)處理的方法有哪些

到此,關(guān)于“python Pandas時(shí)序數(shù)據(jù)處理的方法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI