我經常發現自己想要在另一列中繪製數據,但很難將它們按第3列分組/分列。如何按日期繪製熊貓數據並同時進行分組
假設我有這樣的
片我將如何創造的熊貓一樣的情節?
順便說一句:我喜歡x軸是線性的,而不僅僅是一組彼此相鄰的日期,因爲它給出了關於組內測量彼此接近的想法 - 但是對於在距離太遠的情況下知道如何做到這一點。
UPDATE
從@Ffisegydd答案是非常有益的。然而,我接受答案的速度太快了 - 我發現在實際的Excel表格上試用代碼時,這個問題完全是我的錯,因爲我沒有提供Excel工作表。 @Ffisegydd非常友好,可以根據我的問題手動創建數據框,但使用excel文件有點不同。
我做apoligize。下面是一個Excel文件: https://dl.dropboxusercontent.com/u/3216968/Example.xlsx
這是多遠我得到了(在IPython的筆記本)
import pandas as pd
import datetime as dt
path2file = r"C:\Example.xlsx"
_xl = pd.ExcelFile(path2file)
df = pd.read_excel(path2file, _xl.sheet_names[0], header=0)
df
df.Date = df.Date.apply(lambda x: dt.datetime.strptime(x, '%Y.%m.%d').date())
df
這裏是哪裏出了問題:
pd.DataFrame(data= [df.Data, df.Group], columns = ['Data', 'Group'], index=df.Date)
給予此錯誤
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-9-231baa928f67> in <module>()
----> 1 pd.DataFrame(data= [df.Data, df.Group], columns = ['Data', 'Group'], index=df.Date)
C:\Python27\lib\site-packages\pandas\core\frame.pyc in __init__(self, data, index, columns, dtype, copy)
245 index = _default_index(len(data))
246 mgr = _arrays_to_mgr(arrays, columns, index, columns,
--> 247 dtype=dtype)
248 else:
249 mgr = self._init_ndarray(data, index, columns, dtype=dtype,
C:\Python27\lib\site-packages\pandas\core\frame.pyc in _arrays_to_mgr(arrays, arr_names, index, columns, dtype)
4471 axes = [_ensure_index(columns), _ensure_index(index)]
4472
-> 4473 return create_block_manager_from_arrays(arrays, arr_names, axes)
4474
4475
C:\Python27\lib\site-packages\pandas\core\internals.pyc in create_block_manager_from_arrays(arrays, names, axes)
3757 return mgr
3758 except (ValueError) as e:
-> 3759 construction_error(len(arrays), arrays[0].shape[1:], axes, e)
3760
3761
C:\Python27\lib\site-packages\pandas\core\internals.pyc in construction_error(tot_items, block_shape, axes, e)
3729 raise e
3730 raise ValueError("Shape of passed values is {0}, indices imply {1}".format(
-> 3731 passed,implied))
3732
3733 def create_block_manager_from_blocks(blocks, axes):
ValueError: Shape of passed values is (2,), indices imply (2, 12)
或做這個
pd.DataFrame({'data': df.Data, 'group': df.Group}, index=df.Date)
我已經編輯我的答案:)存在與實際的答案更詳細的評論。 – Ffisegydd