如何使用x轴上的日期创建和清空散点图 - Python,Pandas?

时间:2017-03-09 05:43:28

标签: python-3.x pandas datetime matplotlib scatter

我有一个如下所示的数据框:

date                  number_of_books   ... (additional columns)
1997/06/01 23:15        3
1999/02/19 14:56        5
1999/10/22 18:20        7 
2001/11/04 19:13        19
...                     ...
2014/04/30 02:14        134

我的目标是创建一个空的散点图,然后分别添加每个点,因为该点的颜色取决于数据框内的其他因素。但是,我无法在不使用我的数据帧的情况下找到创建空散点图的方法。有没有办法做到这一点? (可能通过使变量保持图?)我希望x轴只是日期(YYYY / MM / DD),y轴是书的数量。

我的计划是在将日期字符串和number_of_book字符串添加到绘图之前将其转换。所以想法就是......

for index, row in df.itterows()
    convert date to datetime and number_of_books to int
    if condition met (based on other columns):
         plot with color blue
    else:
         plot with color red

1 个答案:

答案 0 :(得分:0)

您可以在pd.DataFrame中创建一个列来存储颜色信息,并使用scatter绘图函数将参数传递给每个数据点。

参见例如:

import pandas as pd
import matplotlib.pyplot as plt

# your dataframe
df = pd.DataFrame({"date": ["1997/06/01 23:15", "1999/02/19 14:56", "1999/10/22 18:20", "2001/11/04 19:13"],
                    "number_of_books": [3, 5, 7, 19]})

# add empty column to store colors
df["color"] = np.nan

# loop over each row and attribute a conditional color
for row in range(len(df)):
    if row<2: #put your condition here
        df.loc[row, "color"] = "r"
    else: #second condition here
        df.loc[row, "color"] = "b"

# convert the date column to Datetime
df.date = pd.to_datetime(df.date)

# plot the data
plt.scatter([x for x in df.date], df.number_of_books, c=df.color)
plt.show()

Imgur