Tôi đang cố tạo một ô phân tán cơ bản dựa trên một khung dữ liệu Pandas. Nhưng khi tôi gọi thường trình phân tán, tôi gặp lỗi "TypeError: promotion type invalid". mẫu mã để tạo lại vấn đề được trình bày dưới đây:Lỗi loại hình gấu trúc cố gắng để lô
t1 = pd.to_datetime('2015-11-01 00:00:00')
t2 = pd.to_datetime('2015-11-02 00:00:00')
Time = pd.Series([t1, t2])
r = pd.Series([-1, 1])
df = pd.DataFrame({'Time': Time, 'Value': r})
print(df)
print(type(df.Time))
print(type(df.Time[0]))
fig = plt.figure(figsize=(x_size,y_size))
ax = fig.add_subplot(111)
ax.scatter(df.Time, y=df.Value, marker='o')
Các kết quả đầu ra là
Time Value
0 2015-11-01 -1
1 2015-11-02 1
<class 'pandas.core.series.Series'>
<class 'pandas.tslib.Timestamp'>
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-285-f4ed0443bf4d> in <module>()
15 fig = plt.figure(figsize=(x_size,y_size))
16 ax = fig.add_subplot(111)
---> 17 ax.scatter(df.Time, y=df.Value, marker='o')
C:\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, **kwargs)
3635 edgecolors = 'face'
3636
-> 3637 offsets = np.dstack((x, y))
3638
3639 collection = mcoll.PathCollection(
C:\Anaconda3\lib\site-packages\numpy\lib\shape_base.py in dstack(tup)
365
366 """
--> 367 return _nx.concatenate([atleast_3d(_m) for _m in tup], 2)
368
369 def _replace_zero_by_x_arrays(sub_arys):
TypeError: invalid type promotion
Tìm kiếm xung quanh tôi đã tìm thấy một bài tương tự Pandas Series TypeError and ValueError when using datetime điều này gợi ý rằng lỗi là do có nhiều kiểu dữ liệu trong chuỗi. Nhưng điều đó dường như không phải là vấn đề trong ví dụ của tôi, được chứng minh bằng thông tin loại tôi đang in.
Lưu ý rằng nếu tôi ngừng sử dụng các đối tượng ngày giờ của gấu trúc và làm cho 'Thời gian' trở thành phao thay vì điều này hoạt động tốt, ví dụ:
t1 = 1.1 #
t2 = 1.2
Time = pd.Series([t1, t2])
r = pd.Series([-1, 1])
df = pd.DataFrame({'Time': Time, 'Value': r})
print(df)
print(type(df.Time))
print(type(df.Time[0]))
fig = plt.figure(figsize=(x_size,y_size))
ax = fig.add_subplot(111)
ax.scatter(df.Time, y=df.Value, marker='o')
với sản lượng
Time Value
0 1.1 -1
1 1.2 1
<class 'pandas.core.series.Series'>
<class 'numpy.float64'>
và đồ thị trông giống tốt. Tôi đang thua lỗ là tại sao việc sử dụng datetime lại gây ra lỗi quảng bá loại không hợp lệ? Tôi đang sử dụng Python 3.4.3 và gấu trúc 0.16.2.
Tôi rất vui vì bạn đã giải quyết nó. Tốt công việc :) –
Tôi đề nghị chấp nhận câu trả lời của riêng bạn nếu nó cung cấp một giải pháp đầy đủ cho câu hỏi của bạn. Điều này sẽ chỉ ra cho hệ thống rằng câu hỏi được giải quyết. –