折线图
任务说明
对于源数据,可视化2015-10-20的销售总金额,横坐标为小时,纵坐标为每小时的销售总金额
思路
总体分为两部分,首先是数据处理,然后是作图。数据处理包括数据读取,创建目标变量的两个矩阵,合并矩阵,提取小时数,分组求和。作图便是对画布做一些处理。
代码
数据处理部分
data = pd.read_csv('data.csv')
the_day = data[data.trx_date_c1=='2015-10-20']
the_day_c1 = the_day[['exp_c1','trx_datime_c1']]
the_day_c1.rename(columns={'exp_c1':'Sell amouts','trx_datime_c1':'Datetime'},inplace=True)
the_day_c2 = the_day[['exp_c2','trx_datime_c2']]
the_day_c2.rename(columns={'exp_c2':'Sell amouts','trx_datime_c2':'Datetime'},inplace=True)
the_day_C = pd.concat([the_day_c1,the_day_c2],axis=0)
the_day_C = the_day_C.reset_index(drop=True)
the_day_C['hour'] = the_day_C['Datetime'].apply(lambda x: x[11:13])
line = pd.DataFrame(the_day_C.groupby(['hour']).sum()).loc['00':,:]
首先用.read_csv读取csv文件,因为我们的目标是2015-10-20这天各小时的销售金额,紧接着就把变量trx_date_c1定位到这一天,然后创建两个二维数组the_day_c1与c2,把我们需要的变量trx_datetime_c1与c2以及对应的金额exp_c1与c2放进去,形成两个矩阵,同时为了直观方便,对其做了一个rename处理。对于返回的数据列表用.concat()函数进行合并,因为是对行进行合并,所以axis=0(列即为1),做完合并处理后,为保证数据的连续性,避免错乱,这里用到.reset_index(drop=True)。最后对Datetime做切片处理,提取我们的小时数hour,然后用.DataFrame()函数的分组求和,groupby()对小时数分组,sum()对金额求和。
作图部分
plt.figure(figsize=(10, 8))
plt.plot(line.index, line['Sell amouts'])
plt.xlabel('Hour', size=13)
plt.ylabel('Sell Amouts', size=13)
plt.show()
这里对画布尺寸figsize=(宽,高),横纵坐标,以及横纵坐标的标题和尺寸做处理。plot(x,y)这里x为向量,y为矩阵,确保到y的行数与向量一样作为横坐标,那么列数对应的就是纵坐标。