#python #pandas #datetime #data-visualization #bokeh
Вопрос:
Я новичок в Python/Боке/Пандах.
Я могу построить линейный график в панд/боке, используя параметры parse_date.
Однако я наткнулся на набор данных(.csv), где столбец выглядит следующим образом
Мой код, как показано ниже, дает пустой график, если столбец «Год/Порты» находится в форме ГГГГ-ГГГГ, например, с 1952-53, 1953-54, 1954-55 и т.д.
Нужно ли мне извлекать только ГГГГ и график, потому что это работает, но я уверен, что данные должны визуализироваться не так.
Если я извлеку только ГГГГ с помощью CSV или инструментов Notepad , то проблем не возникнет, так как даты читаются идеально, и я получу хороший осмысленный линейный график
#Total Cargo Handled at Mormugao Port from 1950-51 to 2019-20 import pandas as pd from bokeh.plotting import figure,show from bokeh.io import output_file #read the CSV file shared by GOI df = pd.read_csv("Cargo_Data_full.csv",parse_dates=["Year/Ports"]) # selecting rows based on condition output_file("Cargo tracker.html") f = figure(height=200,sizing_mode = 'scale_width',x_axis_type = 'datetime') f.title.text = "Cargo Tracker" f.xaxis.axis_label="Year/Ports" f.yaxis.axis_label="Cargo handled" f.line(df['Year/Ports'],df['OTHERS']) show(f)
Комментарии:
1. У меня нет возможности проверить это,но вы могли бы попробовать: f.строка([y[:4] для y в df[‘Год/Порты’]], df[‘ДРУГИЕ»])
Ответ №1:
Вы не можете использовать parse_dates
в этом случае, так как формат не является допустимым для даты и времени. Вы можете использовать pandas
нарезку строк, чтобы сохранить только часть ГГГГ.
df = pd.DataFrame({'Year/Ports':['1952-53', '1953-54', '1954-55'], 'val':[1,2,3]}) df['Year/Ports'] = df['Year/Ports'].str[:4] print(df) Year/Ports val 0 1952 1 1 1953 2 2 1954 3
Оттуда вы можете превратить его в datetime
, если это имеет для вас смысл.
df['Year/Ports'] = pd.to_datetime(df['Year/Ports']) print(df) Year/Ports val 0 1952-01-01 1 1 1953-01-01 2 2 1954-01-01 3
Комментарии:
1. Спасибо.. Я попробую это ..на самом деле я вырезал год/порты в CSV, используя функции excel, чтобы это работало …я постараюсь сделать в соответствии с вашим предложением, чтобы все происходило в программе
2. Если это сработает, пожалуйста, отметьте как принятый ответ.