içinde DateTimeIndex ile çizilen karşılaşılan bir zaman serisi Pandalar çizme entegrasyonu ile çizmeye çalışıyorum ve hata TypeError: Empty 'DataFrame': no numeric data to plot
alıyorum. Matplotlib'i kullanmak doğrudan işe yarıyor, fakat sanırım kütüphaneyi yanlış kullanıyorum ve Panda'ları kullanmamla yanlış yoldan gitmediğime emin olmak istiyorum.Boş DataFrame hatası, Pandalar
Ben iki sütun içeren bir veri dosyası vardır:
İşte oluyor budur. İlk sütun bir zaman damgasıdır ve ikinci sütun geçen bir süredir. Her ikisi de nanosaniye birimlerindedir. Ben kullanılan veriler okuyorum: Bu veri içeren
data = pd.read_table('trace.log', sep=" ", header=None,
names=("start", "latency"))
print(data.head())
print(data.dtypes)
:
start latency
0 27668827345634 754210039
1 27668827918895 753710503
2 27668827809194 754495193
3 27668827974232 754464123
4 27669581667404 60338395
start int64
latency int64
dtype: object
Sonra datetime64[ns]
için start
dönüştürmek ve bu indeks yapmak ve bir timedelta64[ns]
için latency
dönüştürün.
data.start = pd.to_datetime(data.start, unit="ns")
data.latency = pd.to_timedelta(data.latency, unit="ns")
data.set_index('start', inplace=True)
print(data.head())
print(data.dtypes)
print(data.index)
Yani şimdi bir DateTimeIndex ile zaman serileri var ve benim gecikme bir zaman delta olarak ifade: Ben bu çizmek çalıştığınızda
latency
start
1970-01-01 07:41:08.827345634 00:00:00.754210
1970-01-01 07:41:08.827495897 00:00:01.395999
1970-01-01 07:41:08.827574509 00:00:01.395592
1970-01-01 07:41:08.827605687 00:00:01.381083
1970-01-01 07:41:08.827634020 00:00:01.381130
latency timedelta64[ns]
dtype: object
DatetimeIndex(['1970-01-01 07:41:08.827345634',
'1970-01-01 07:41:08.827495897',
...
'1970-01-01 08:11:07.739615123',
'1970-01-01 08:11:07.756520620'],
dtype='datetime64[ns]', name='start', length=437915, freq=None)
gördüğüm sorundur. Ben çalıştırmak mümkün olmalıdır gördük örnekler dayanarak:
data.latency.plot()
başlangıç zamanı vs gecikmenin bir arsa üretmek için, ama aşağıdaki hatayı alıyorum: Ben çizmek eğer
/opt/conda/lib/python3.5/site-packages/pandas/tools/plotting.py in _compute_plot_data(self)
1092 if is_empty:
1093 raise TypeError('Empty {0!r}: no numeric data to '
-> 1094 'plot'.format(numeric_data.__class__.__name__))
1095
1096 self.data = numeric_data
TypeError: Empty 'DataFrame': no numeric data to plot
Not plt.plot(data.index, data.latency)
kullanarak verileri bekliyorum. Bence çok önemli bir anlayışı kaçırmam gerekiyor ya da bir hata görüyorum. Plot çizme entegrasyonunu kullanabilmek güzel olurdu.
Sana atıfta ne hüner emin değilim. Plot komutunda 'x' verisinin açık bir şekilde ayarlanması, ancak 'x' ayarlanmadan değişkeni çizmenin tamamen 'x' verileri için indeksi kullanması bekledim. –
@NoahWatkins, hile 'set_major_formatter() 'kullanmaktır. Ben sadece 'çizmek için' ('kurtulmak için)' data.set_index ('start') 'yapmak için x '' açıkça ayarladım. x' ekseni - daha hızlı olmalı. – MaxU