前十个吃饭最多的时间
jupyter导包
from matplotlib import pyplot as plt
import pandas as pd #导入pandas用于表格操作
解决中文乱码问题
#sans-serif就是无衬线字体,是一种通用字体族。
#常见的无衬线字体有 Trebuchet MS, Tahoma, Verdana, Arial, Helvetica, 中文的幼圆、隶书等等。
import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号
读取表格合并sheet(当知道sheet名时)
table1=pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail1')
table2=pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail2')
table3=pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail3')
foodData=pd.concat([table1,table2,table3],axis=0,sort=False) #合并表格,行合并
取值初始值
from pandas.plotting import register_matplotlib_converters #注册matplotlib转换器。去除警告
date=foodData['place_order_time'] #取出吃饭时间与对应数量
date
先拆原数据,取出时间和索引重新组合成新的DataFrame
date1=date.values #取出日期时间值
dt_time=pd.to_datetime(date1).time #转化datetime类型,然后取出时间进行操作
date2=date.index #取出索引
df_time=pd.DataFrame(dt_time,index=date2) #把取出的索引和时间进行合并成DataFrame类型
df_time
第一种matplotlib绘图
df_time_counts=df_time[0].value_counts()
df_time_counts
X4=df_time_counts.index[:10]
Y4=df_time_counts.values[:10]
plt.title('一天吃饭时间最多的点')
plt.xlabel('饭点频数')
plt.ylabel('饭点')
plt.xticks(np.arange(10),X4,rotation=60) #定义xticks
plt.bar(['a','b','c','d','e','f','g','h','i','j'],Y4) #柱状图x,y归属
plt.show()
第二种绘图方式直接用Panda里的绘图
df_time_counts=df_time[0].value_counts()[:10]
df_time_counts.plot(kind='bar',title='一天吃饭时间最多的点',rot=60,x='o')
吃饭最多的日期 同理(上一题)
date3=date.values #取出日期时间值
dt_date=pd.to_datetime(date1).date #转化datetime类型,然后取出日期进行操作
date4=date.index #取出索引
df_date=pd.DataFrame(dt_date,index=date4) #把取出的索引和时间进行合并成DataFrame类型
df_date_counts=df_date[0].value_counts()
X5=df_date_counts.index[:10]
Y5=df_date_counts.values[:10]
plt.title('吃饭最多的日期')
plt.xlabel('日期')
plt.ylabel('次数')
plt.xticks(np.arange(10),X5,rotation=60) #定义xticks
plt.bar(['a','b','c','d','e','f','g','h','i','j'],Y5) #柱状图x,y归属
plt.show()
吃饭最多的周天(同理上俩题)
date5=date.values #取出日期时间值
dt_weekday=pd.to_datetime(date1).weekday_name #转化datetime类型,然后取出星期X天进行操作
date6=date.index #取出索引
dt_weekday=pd.DataFrame(dt_weekday,index=date6) #把取出的索引和时间进行合并成DataFrame类型
df_week_counts=dt_weekday[0].value_counts()
X6=df_week_counts.index[:7]
Y6=df_week_counts.values[:7]
plt.title('吃饭最多的周xDay')
plt.xlabel('周天')
plt.ylabel('次数')
plt.xticks(np.arange(10),X6,rotation=60) #定义xticks
plt.bar(['a','b','c','d','e','f','g'],Y6) #柱状图x,y归属
plt.show()