第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 seaborn 為每小時獨特設(shè)備繪制 KDE?

如何使用 seaborn 為每小時獨特設(shè)備繪制 KDE?

躍然一笑 2023-04-18 17:28:14
我有以下熊貓df(datetime屬于類型datetime64):       device            datetime0       846ee 2020-03-22 14:27:291       0a26e 2020-03-22 15:33:312       8a906 2020-03-27 16:19:063       6bf11 2020-03-27 16:05:204       d3923 2020-03-23 18:58:51我想使用 Seaborn 的 KDE 功能distplot。盡管我不完全明白為什么,但我還是讓它工作了:df['hour'] = df['datetime'].dt.floor('T').dt.timedf['hour'] = pd.to_timedelta(df['hour'].astype(str)) / pd.Timedelta(hours=1)進而sns.distplot(df['hour'], hist=False, bins=arr, label='tef')問題是:我如何做同樣的事情,但只計算 unique devices?我努力了df.groupby(['hour']).nunique().reset_index()df.groupby(['hour'])[['device']].size().reset_index()但是他們給了我不同的結(jié)果(數(shù)量級相同,但或多或少)。我想我不明白我在做什么pd.to_timedelta(df['hour'].astype(str)) / pd.Timedelta(hours=1),這讓我無法思考獨特之處……也許吧。
查看完整描述

2 回答

?
30秒到達戰(zhàn)場

TA貢獻1828條經(jīng)驗 獲得超6個贊

  • pd.to_timedelta(df['time'].astype(str))箱子輸出像0 days 01:00:00

  • pd.to_timedelta(df['time'].astype(str)) / pd.Timedelta(hours=1)創(chuàng)建類似 的輸出1.00,它是float小時數(shù)。

    timedeltas。

import pandas as pd

import numpy as np? # for test data

import random? # for test data


# test data

np.random.seed(365)

random.seed(365)

rows = 40

data = {'device': [random.choice(['846ee', '0a26e', '8a906', '6bf11', 'd3923']) for _ in range(rows)],

? ? ? ? 'datetime': pd.bdate_range(datetime(2020, 7, 1), freq='15min', periods=rows).tolist()}


# create test dataframe

df = pd.DataFrame(data)


# this date column is already in a datetime format; for the real dataframe, make sure it's converted

# df.datetime = pd.to_datetime(df.datetime)


# this extracts the time component from the datetime and is a datetime.time object

df['time'] = df['datetime'].dt.floor('T').dt.time


# this creates a timedelta column; note it's format

df['timedelta'] = pd.to_timedelta(df['time'].astype(str))


# this creates a float representing the hour and its fractional component (minutes)

df['hours'] = pd.to_timedelta(df['time'].astype(str)) / pd.Timedelta(hours=1)


# extracts just the hour

df['hour'] = df['datetime'].dt.hour

顯示(df.head())

這個觀點應(yīng)該闡明時間提取方法之間的區(qū)別。

? ?device? ? ? ? ? ? datetime? ? ? time? ? ? ?timedelta? hours? hour

0? ?8a906 2020-07-01 00:00:00? 00:00:00 0 days 00:00:00? ?0.00? ? ?0

1? ?0a26e 2020-07-01 00:15:00? 00:15:00 0 days 00:15:00? ?0.25? ? ?0

2? ?8a906 2020-07-01 00:30:00? 00:30:00 0 days 00:30:00? ?0.50? ? ?0

3? ?d3923 2020-07-01 00:45:00? 00:45:00 0 days 00:45:00? ?0.75? ? ?0

4? ?0a26e 2020-07-01 01:00:00? 01:00:00 0 days 01:00:00? ?1.00? ? ?1

5? ?d3923 2020-07-01 01:15:00? 01:15:00 0 days 01:15:00? ?1.25? ? ?1

6? ?6bf11 2020-07-01 01:30:00? 01:30:00 0 days 01:30:00? ?1.50? ? ?1

7? ?d3923 2020-07-01 01:45:00? 01:45:00 0 days 01:45:00? ?1.75? ? ?1

8? ?6bf11 2020-07-01 02:00:00? 02:00:00 0 days 02:00:00? ?2.00? ? ?2

9? ?d3923 2020-07-01 02:15:00? 02:15:00 0 days 02:15:00? ?2.25? ? ?2

10? 0a26e 2020-07-01 02:30:00? 02:30:00 0 days 02:30:00? ?2.50? ? ?2

11? 846ee 2020-07-01 02:45:00? 02:45:00 0 days 02:45:00? ?2.75? ? ?2

12? 0a26e 2020-07-01 03:00:00? 03:00:00 0 days 03:00:00? ?3.00? ? ?3

13? 846ee 2020-07-01 03:15:00? 03:15:00 0 days 03:15:00? ?3.25? ? ?3

14? 846ee 2020-07-01 03:30:00? 03:30:00 0 days 03:30:00? ?3.50? ? ?3

繪制每小時的設(shè)備計數(shù)seaborn.countplot

plt.figure(figsize=(8, 6))

sns.countplot(x='hour', hue='device', data=df)

plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')

http://img3.sycdn.imooc.com/643e62d80001e50f05930369.jpg

seaborn.distplot為每個設(shè)備繪制 a

  • 使用seaborn.FacetGrid

  • 這將給出每個設(shè)備的每小時分布。

import seaborn as sns

import matplotlib.pyplot as plt


g = sns.FacetGrid(df, row='device', height=5)

g.map(sns.distplot, 'hours', bins=24, kde=True)

g.set(xlim=(0, 24), xticks=range(0, 25, 1))

http://img3.sycdn.imooc.com/643e62fc0001c45703641063.jpg

http://img4.sycdn.imooc.com/643e63050001c25203560730.jpg

查看完整回答
反對 回復(fù) 2023-04-18
?
婷婷同學(xué)_

TA貢獻1844條經(jīng)驗 獲得超8個贊

你可以試試

df['hour'] = df['datetime'].dt.strftime('%Y-%m-%d %H')
s = df.groupby('hour')['device'].value_counts()


查看完整回答
反對 回復(fù) 2023-04-18
  • 2 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號