![](/img/trans.png)
[英]How to import a CSV with an hour/minute string as a timestamp to panda dataset
[英]How to convert string from csv to hour(s):minute(s)?
如果我復制好鏈接,你們兩張照片。 一個顯示我擁有的 csv 文件,另一個顯示我想要創建的圖表。
這很容易,所以有一個但是,
我想在 y 軸上將 AVG 數(實際上是秒)表示為小時:分鍾。
我認為,它無法解決,因為我花了 3 天時間解決這個問題。
一切,就我的谷歌搜索技能等而言......
但更准確地說,除了與 dateime、timedelta、timestamp 的大量對話之外,沒有任何效果。
要么數據無法顯示在 y 軸上,因為它不代表 plot 之類的數字,要么我沒有正確表示數據。
我試圖創建一種不同的方法,例如轉換使用 divmod 計算的秒數,而不是使用 annonate 將它們放在條形圖的頂部。 這個有問題,還是...
后來我想我找到了聖杯:
我無法使用它,我不明白我應該如何為此創建可接受的數據類型..
感謝任何可以提供幫助的人!
您在第一張圖片中顯示的示例可以使用plot.bar
中的 plot.bar 進行復制
>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df["activity"] = ['run', 'swim', 'drive']
>>> df["avg"] = [86400,43200,21600]
>>> df
activity avg
0 run 86400
1 swim 43200
2 drive 21600
>>> df.plot.bar(x="activity")
<AxesSubplot: xlabel='activity'>
>>> plt.show()
要表示經過一定秒數的時間,您可以使用fromtimestamp
和格式化strftime
,但它可能與 matplotlib 不兼容,然后使用Timple
是相關的,但無法正確繪制圖形或者可能需要執行類似探索性的操作數據分析或應用一定的統計程序。
>>> import datetime
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> import timple
>>>
>>> tmpl = timple.Timple()
>>> tmpl.enable()
>>> timedeltas = np.array([datetime.timedelta(seconds=(s)) for s in df["avg"]])
>>> timedeltas
array([datetime.timedelta(days=1), datetime.timedelta(seconds=43200),
datetime.timedelta(seconds=21600)], dtype=object)
>>> plt.plot(timedeltas, df["activity"])
[<matplotlib.lines.Line2D object at 0x0000026FAC3F5B40>]
>>> plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.