根据某餐厅日常销售数据(catering_sale.xls)进行数据质量分析,缺失值过滤,过滤掉含有缺失值记录,异常检测,绘制箱图,保留箱图上的数据,进行必要的类型转换Timestamp。 统计量分析
时间: 2024-03-09 16:49:39 浏览: 15
好的,下面是代码实现:
```python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 读取excel数据
df = pd.read_excel('catering_sale.xls')
# 过滤缺失值记录
df.dropna(inplace=True)
# 将日期时间转换为Timestamp类型
df['日期'] = pd.to_datetime(df['日期'])
# 绘制箱图并保存数据
box_data = plt.boxplot(df.iloc[:, 1:].values, sym='o', whis=1.5)
# 获取箱图上的数据
outliers = [flier.get_ydata() for flier in box_data['fliers']]
caps = [cap.get_ydata() for cap in box_data['caps']]
whiskers = [whisker.get_ydata() for whisker in box_data['whiskers']]
medians = [median.get_ydata() for median in box_data['medians']]
boxes = [box.get_ydata() for box in box_data['boxes']]
# 显示箱图
plt.show()
# 计算统计量
data = df.iloc[:, 1:].values
mean = np.mean(data, axis=0)
median = np.median(data, axis=0)
q1, q3 = np.percentile(data, [25, 75], axis=0)
iqr = q3 - q1
upper_bound = q3 + 1.5 * iqr
lower_bound = q1 - 1.5 * iqr
# 输出统计结果
print('平均值:', mean)
print('中位数:', median)
print('第一四分位数:', q1)
print('第三四分位数:', q3)
print('四分位距:', iqr)
print('上界:', upper_bound)
print('下界:', lower_bound)
```
这段代码首先基本与之前的代码相同,只是在绘制箱图时,使用 `boxplot` 方法返回的返回值中包含了箱图上的所有数据。我们将这些数据保存在 `box_data` 变量中。然后使用列表推导式分别获取箱图上的异常值、箱体边缘、须、中位数和箱体。最后使用 `show` 方法显示图像。
接着使用 NumPy 的 `mean`、`median`、`percentile` 等方法计算平均值、中位数、四分位数、四分位距、上界和下界等统计量。最后输出统计结果。