【发布时间】:2018-12-27 03:54:21
【问题描述】:
我有一个纪元纳秒的数据集
M d time
0 1081083 28000000000 1.530683e+18
1 1081083 16000000000 1.530683e+18
2 1081085 33000000000 1.530683e+18
3 1081083 28000000000 1.530683e+18
4 1081085 27000000000 1.530683e+18
转换后的样子是这样的:
M d time
0 1081083 07:16:40 2018-07-04 05:42:20
1 1081083 09:56:40 2018-07-04 05:43:03
2 1081085 16:10:00 2018-07-04 05:43:12
3 1081083 07:16:40 2018-07-04 05:43:51
4 1081085 05:30:00 2018-07-04 05:44:01
将纪元转换为正常的代码是:
import pandas as pd
import time
import matplotlib.pyplot as plt
df1 = pd.read_csv('testsy_1.csv')
df1['time']=pd.to_datetime(df1['time'], unit='ns')
df1['d']=df1['d'].apply(lambda x: time.strftime("%H:%M:%S",time.localtime(x)))
但是当尝试获取 df1['M'],df1['d'] 的饼图时:
plt.figure(figsize=(16,8))
ax1 = plt.subplot(121, aspect='equal')
df1.plot(kind='pie', y = 'd', ax=ax1, autopct='%1.1f%%',
startangle=90, shadow=False, labels=df1['M'], legend = False, fontsize=14)
我得到一个错误:
TypeError: Empty 'DataFrame': no numeric data to plot
由于转换后的数据已经存在,数据框如何为空?如何在此处绘制饼图?
按照@jezrael 的建议,我省略了df1['d']=df1['d'].apply(lambda x: time.strftime("%H:%M:%S",time.localtime(x))) 并执行了脚本,没有任何更改,为我获取数据集的 df.head() 的结果。
但是当将上述内容应用于大约 23000 行的完整数据集时,我得到了一个可怕的情节......有什么问题?
【问题讨论】:
标签: python pandas pie-chart epoch