任务B:数据分析与可视化
子任务一:数据分析
import pandas as pd
data = pd.read_csv("data.csv")
data
标题 | 店铺 | 封面 | 发布日期 | 价格 | 评分 | 操作系统 | 运行内存 | 存储 | 屏幕尺寸 | 屏幕特性 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | Apple 苹果15 iPhone 15 支持移动联通电信5G双卡双待手机 粉色 128GB | 玺瑞手机通讯买手店 | http://img14.360buyimg.com/n7/jfs/t1/230911/11... | NaN | 5788.0 | 1.0 | NaN | NaN | NaN | 6.1英寸 | NaN |
1 | Apple iPhone 14 (A2884) 128GB 星光色 支持移动联通电信5G 双... | Apple产品京东自营旗舰店 | http://img13.360buyimg.com/n7/jfs/t1/92342/8/4... | 2022-09-08 | 5399.0 | 9.7 | iOS | NaN | 128GB | 6.1英寸 | 无 |
2 | OPPO K10x 极光 8GB+256GB 67W超级闪充 5000mAh长续航 120H... | OPPO京东自营官方旗舰店 | http://img12.360buyimg.com/n7/jfs/t1/234224/24... | 2022-09-22 | 1299.0 | 9.8 | Android | 8GB | 256GB | 6.59英寸 | 无 |
3 | HUAWEI nova 10 青春版 一亿像素超清影像 66W华为超级快充 6.78 英寸... | 华为京东自营官方旗舰店 | http://img14.360buyimg.com/n7/jfs/t1/87839/33/... | 2023-03-03 | 1499.0 | 9.5 | HarmonyOS | NaN | NaN | 6.78英寸 | 无 |
4 | 华为畅享 60X 7000mAh长续航 6.95英寸 影音大屏 256GB 曜金黑 鸿蒙智能... | 华为京东自营官方旗舰店 | http://img11.360buyimg.com/n7/jfs/t1/236715/9/... | 2023-04-17 | 1749.0 | 9.7 | HarmonyOS | NaN | NaN | 6.95英寸 | 无 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
140 | vivo iQOO Neo8 第一代骁龙8+自研芯片V1+ 120W超快闪充144Hz高刷 ... | 华汇丰手机小店 | http://img13.360buyimg.com/n7/jfs/t1/237111/8/... | NaN | 2199.0 | 1.0 | Android | NaN | NaN | 6.78英寸 | NaN |
141 | 荣耀X50i 一亿像素超清影像 12GB+256GB超大双存 6.7英寸超窄边护眼全视屏 5... | 云南电信京东自营旗舰店 | http://img12.360buyimg.com/n7/jfs/t1/108756/13... | 2023-02-17 | 1388.0 | 1.0 | Android | 12GB | NaN | 6.7英寸 | 无 |
142 | 荣耀 畅玩20 虎贲T610芯片 6.51英寸全高清大 全网通 智能手机 送老人 送学生 畅... | 松锐手机专营店 | http://img14.360buyimg.com/n7/jfs/t1/98127/2/3... | NaN | 618.0 | 1.0 | Android | NaN | NaN | 6.51英寸 | 无 |
143 | 摩托罗拉 edge S30 骁龙888plus 5G手机 s30魅影黑12G+512G冠军版98新 | 京之优选经营部 | http://img14.360buyimg.com/n7/jfs/t1/195836/34... | NaN | 2049.0 | 1.0 | Android | NaN | NaN | 6.8英寸 | NaN |
144 | 三星 SAMSUNG Galaxy Z Fold3 5G 大屏折叠手机 F9260 全网通5... | 玮梦佳手机买手店 | http://img14.360buyimg.com/n7/jfs/t1/235305/14... | NaN | 5100.0 | 1.0 | NaN | NaN | NaN | 7.6英寸 | NaN |
145 rows × 11 columns
1、 分别统计各操作系统的手机总数,展示前五名;
systemSum = data['操作系统'].value_counts()
systemSum.head()
Android 89
HarmonyOS 22
iOS 19
功能机 7
小米澎湃os 3
Name: 操作系统, dtype: int64
2、 统计各运行内存大小的手机数量,展示前五名;
ram = data['运行内存'].value_counts()
ram.head()
8GB 22
12GB 21
16GB 18
4GB 3
6GB 2
Name: 运行内存, dtype: int64
3、 统计2022年发布的手机的平均售价保留两位小数;
data['发布日期'] = data['发布日期'].str.extract(r'(\d{4})')
year2022 = data.loc[data['发布日期'] == '2022']
meanPrice = year2022['价格'].mean()
round(meanPrice, 2)
2057.12
4、 统计所有屏幕尺寸大于等于6.5的手机的平均售价,保存两位小数。
data['屏幕尺寸'] = data['屏幕尺寸'].apply(lambda x:str(x).split("英")[0])
screenSize = data.loc[data['屏幕尺寸'] >= '6.5']
sizePrice = screenSize['价格'].mean()
round(sizePrice, 2)
4193.5
子任务二:数据可视化
1、 用柱状图显示各评分的手机总数
import matplotlib.pyplot as plt
import seaborn as sns
scoreData = data.drop(data[data['评分'] < 2.0].index)
scoreSum = scoreData['评分'].value_counts()
sns.set(font='SimHei')
plt.figure(figsize=(10,6))
sns.barplot(x=scoreSum.index, y=scoreSum.values)
plt.title("各评分手机总数")
plt.xlabel("分数")
plt.ylabel("个数")
plt.show()
2、 用折线图显示2000年以后的手机平均评分走势;
meanScore = data.groupby('发布日期').agg({"评分": 'mean'})
plt.figure(figsize=(10,6))
sns.set(font='SimHei')
sns.lineplot(data=meanScore, x='发布日期', y='评分', marker='o')
plt.title("2000年以后的手机平均评分走势")
plt.xlabel("发布日期")
plt.ylabel("评分")
plt.show()
3、 用饼图显示各类型手机数数占比。
plt.figure(figsize=(10,6))
sns.set(font='SimHei')
plt.pie(x=systemSum.values, labels=systemSum.index, autopct="%.1f%%")
plt.title("各类型手机数占比")
plt.legend(loc='best')
plt.axis("equal")
plt.show()