任务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()

png
png

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()

png
png

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()

png
png