我已经使用以下方法获得了不同书籍的出版年份:
# -*- coding: utf-8 -*-
"""
Created on Fri Mar 22 13:12:11 2019
@author: Oppilas
"""
from __future__ import division
from matplotlib import pyplot as plt
from collections import Counter
import pandas as pd
import numpy as np
import re
import math
file = "BL-Flickr-Images-Book.csv"
df = pd.read_csv(file)
cnt = 0
for row in df['Date of Publication']:
try:
row += 0
except TypeError:
try:
new_value = int(row)
df.loc[cnt,'Date of Publication'] = new_value
except ValueError:
new_row = re.sub("\D","",row)
df.loc[cnt,'Date of Publication'] = int(new_row[:4])
cnt += 1
pub_years = []
for year in df['Date of Publication']:
if math.isnan(year):
continue
else:
if len(str(year)) >= 4:
pub_years.append(year)
那么,如何使用matplotlib合理地绘制此数据? 我尝试过pyplot,但是图形线到处都是。 我还尝试查看hist的文档,但无法正常运行。
我提取的数据不好吗,还是我缺乏使用matplotlib的技能?
答案 0 :(得分:0)
通常,您几乎不需要遍历行即可处理数据框。您可以直接在列上工作。例如,这应该起作用:
df.groupby('Year').count().plot(marker='o')
如果您有一些错误的日期,例如例如61、62、63等数字,而不是1961、1962、1963等,那么您可以将其过滤掉:
df.loc[df['Year']<100, 'Year'] = df['Year'] + 1900
我将您的列df['Date of publication']
更改为df['Year']
,以使示例易于阅读。