如何在Python中使用matplotlib绘制数据?

时间:2019-04-05 23:05:53

标签: python matplotlib

我已经使用以下方法获得了不同书籍的出版年份:

# -*- 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的技能?

1 个答案:

答案 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'],以使示例易于阅读。