????♂️ 个人主页:@艾派森的个人主页
✍????作者简介:Python学习者
???? 希望大家多多支持,我们一起进步!????
如果文章对你有帮助的话,
欢迎评论 ????点赞???????? 收藏 ????加关注+
目录
1.项目背景
2.数据集介绍
3.技术工具
4.导入数据
5.数据可视化
源代码
1.项目背景
在科技飞速发展和消费者需求日益多样化的今天,智能手机已成为人们生活中不可或缺的一部分。随着市场竞争的加剧和品牌数量的增加,智能手机市场呈现出前所未有的繁荣和复杂性。在这样的背景下,智能手机的价格成为了消费者选择产品时的重要考量因素,也是企业制定市场策略时的重要参考。
智能手机价格数据集的可视化分析正是在这样的背景下应运而生。通过收集、整理和分析大量智能手机的价格数据,我们能够更深入地了解市场的价格结构、品牌竞争态势以及消费者偏好。这种分析不仅有助于消费者更清晰地认识到不同品牌和型号手机的定价水平,从而做出更理性的购买决策,还有助于企业更准确地把握市场动态,制定更有效的市场策略。
具体而言,智能手机价格数据集的可视化分析可以揭示价格分布规律,为消费者提供一个清晰的价格参考框架;可以分析品牌竞争态势,了解各品牌在市场上的竞争地位和策略,以及消费者对不同品牌的偏好程度;可以洞察消费者偏好,分析出消费者对不同配置和价格的偏好程度,为企业制定产品策略提供数据支持;还可以预测市场趋势,发现智能手机价格的变化趋势和规律,为未来的市场走势做出预测。
2.数据集介绍
该数据集提供了各种智能手机的全面信息集合,可以对其规格和定价进行详细分析。它涵盖了广泛的智能手机,涵盖不同的品牌、型号和配置,使其成为对智能手机行业感兴趣的研究人员、数据分析师和机器学习爱好者的宝贵资源。
数据来自西班牙网站PC Components。数据是使用 Power Automate 收集的。
包括的字段:
Smartphone:智能手机的唯一标识符或型号名称。
Brand:智能手机品牌。
Model:智能手机品牌型号。
RAM:可用于多任务处理的内存量,也叫运行内存。
Storage:智能手机的容量,即固态内存。
Color:智能手机的颜色。
Free:如果智能手机附有移动公司合同,则为/否。
Final Price:以相应货币表示的智能手机成本。
通过利用该数据集,研究人员和分析师可以探索智能手机规格与其定价之间的模式、趋势以及关系。它是执行价格预测、市场分析和不同智能手机配置比较等任务的绝佳资源。无论您是有兴趣确定最具成本效益的选项,还是了解特定硬件组件对智能手机价格的影响,该数据集都为深入探索提供了丰富的可能性。
3.技术工具
Python版本:3.9
代码编辑器:jupyter notebook
4.导入数据
导入第三方库并加载数据集
查看数据大小
查看数据基本信息
查看数值型变量的描述性统计
查看非数值型变量的描述性统计
5.数据可视化
前五名是:
1 -三星
2-Xiaomi
3-Apple
4-Realme
5-OPPO
平均价格最高的前5款智能手机是:
1-Apple
2-Lenovo
3-Asus
4-Realme
5-Samsung
智能手机的价格因内存类别的不同而有很大差异。
源代码
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style("whitegrid")
from scipy.stats import f_oneway
import warnings
warnings.filterwarnings('ignore')
df = pd.read_csv("smartphones.csv")
df.head()
df.shape
df.info()
df.describe()
df.describe(include='O')
df.isnull().sum()
df.duplicated().sum()
# df.dropna(inplace=True)
# df.isnull().sum()
# 价格分布
sns.histplot(data=df,x='Final Price',kde=True)
plt.show()
# 各品牌手机的价格箱线图
plt.figure(figsize=(12,14))
sns.boxplot(data=df,x='Final Price',y='Brand')
plt.show()
# 各颜色手机的价格箱线图
plt.figure(figsize=(10,12))
sns.boxplot(data=df,x='Final Price',y='Color')
plt.show()
sns.set_palette("RdBu")
plt.title("Distribute of RAM")
sns.countplot(data = df ,x="RAM")
plt.xlabel("Type of Ram")
plt.ylabel("Count")
plt.show()
sns.set_palette("RdBu")
plt.title("Distribute of Storage")
sns.countplot(data = df ,x="Storage")
plt.xlabel("Type of Storage")
plt.ylabel("Count")
plt.show()
# 智能手机品牌在数据集中的分布情况如何?
plt.figure(figsize=(10,5))
plt.title("Top 10 Brands")
figure = sns.barplot(x=df.Brand.value_counts()[0:10].index ,y= df.Brand.value_counts()[0:10].values)
plt.xlabel("Brands")
plt.ylabel("Frequance")
plt.show()
前五名是:
1 -三星
2-Xiaomi
3-Apple
4-Realme
5-OPPO
# 哪个智能手机品牌的平均价格最高?
fig ,ax =plt.subplots(nrows=1 ,ncols= 2 ,sharex=True, figsize=(20,10) )
fig.set_label("avg.Price of Brand")
#ax[0]
figure = sns.barplot(x =df.groupby("Brand")["Final Price"].mean().sort_values(ascending=False).round(3)[0:5].index ,
y=df.groupby("Brand")["Final Price"].mean().sort_values(ascending=False).round(3)[0:5].values ,
ax= ax[1])
ax[0].set_ylabel("avg.Price",fontsize=30)
ax[0].set_xlabel("Brand",fontsize=30)
#ax[1]
ax[0].plot(df.groupby("Brand")["Final Price"].mean().sort_values(ascending=False).round(3)[0:5].index ,
df.groupby("Brand")["Final Price"].mean().sort_values(ascending=False).round(3)[0:5].values ,
"o--")
ax[1].set_ylabel("avg.Price",fontsize=30)
ax[1].set_xlabel("Brand",fontsize=30)
plt.show()
平均价格最高的前5款智能手机是:
1-Apple
2-Lenovo
3-Asus
4-Realme
5-Samsung
# 内存和智能手机的价格之间是否存在关联?
from scipy.stats import f_oneway
cleaned_df = df.dropna(subset=['RAM', 'Final Price'])
storage_categories = cleaned_df['RAM'].unique()
price_arrays = [cleaned_df[cleaned_df['RAM'] == category]['Final Price'] for category in storage_categories]
# 进行单因素方差分析
f_statistic, p_value = f_oneway(*price_arrays)
print("F-statistic:", f_statistic)
print("P-value:", p_value)
智能手机的价格因内存类别的不同而有很大差异。
# 不同品牌的智能手机颜色分布有何不同?
color_counts = df.groupby(['Brand', 'Color']).size().unstack(fill_value=0)
color_counts.plot(kind='bar', stacked=True, figsize=(10, 6))
plt.title('Distribution of Smartphone Colors by Brand')
plt.xlabel('Brand')
plt.ylabel('Count')
plt.xticks(rotation=45, ha='right')
plt.legend(title='Color', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()