目录

载入数据集

数据预处理

探索性数据分析

发现相关性

开发模型

模型部署

Python数据分析代码实战


基于Python数据分析的详细讲解+实战(含代码)-LMLPHP

在这个实战中,我们将使用Python来对一个销售数据集进行分析和处理,并以此生成有关销售趋势和产品性能的报告。具体来说,我们将:

  1. 载入数据集
  2. 进行数据预处理,包括清洗和转换数据
  3. 进行探索性数据分析,包括可视化和统计分析
  4. 发现相关性,包括特征工程和相关性分析
  5. 开发模型,包括模型选择、训练和评估
  6. 模型部署,包括将模型用于新数据的预测

这个实战将展示如何使用Python的pandas、matplotlib、seaborn和scikit-learn这些库来处理和分析数据。

  1. 载入数据集

我们首先需要导入需要的库,包括pandas、matplotlib和seaborn等。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

然后我们将数据集加载到一个DataFrame中。

df_sales = pd.read_csv('sales_data.csv')
  1. 数据预处理

在开始探索数据之前,我们需要对数据进行一些预处理。这包括检查缺失值、清洗数据以及转换数据类型等。

我们首先检查缺失值。

df_sales.isnull().sum()

然后我们根据需要填充或删除缺失值。

df_sales = df_sales.dropna() # 删除含有缺失值的行

接下来,我们需要清洗数据,包括删除不需要的列、重命名列名称等等。

df_sales = df_sales.drop(['Order ID', 'Ship Date', 'Ship Mode'], axis=1) # 删除不需要的列
df_sales = df_sales.rename(columns={'Order Date': 'Order_Date', 'Customer Name': 'Customer_Name', 'Product Name': 'Product_Name', 'Sales': 'Sales_USD'}) # 重命名列名称

我们还需要对数据类型进行转换。

df_sales['Order_Date'] = pd.to_datetime(df_sales['Order_Date']) # 转换Order_Date列为时间类型
df_sales['Product_Category'] = df_sales['Product_Name'].str.split(' - ', expand=True)[0] # 从Product_Name中提取Product_Category列

最后我们需要确保每个数据类型都正确。

df_sales.dtypes
  1. 探索性数据分析

现在我们可以开始探索销售数据集。我们需要使用pandas和seaborn这两个库进行探索性数据分析。

首先,我们可以使用describe函数来获取数据的基本统计信息。

df_sales.describe()

然后我们可以使用seaborn绘制箱线图来可视化销售数据的分布。

sns.boxplot(data=df_sales, x='Sales_USD')

接下来,我们可以绘制每个产品类别的销售额分布。

sns.barplot(data=df_sales, x='Product_Category', y='Sales_USD', ci=None)

然后我们可以使用seaborn的散点图和回归线来显示销售额和利润之间的关系。

sns.regplot(data=df_sales, x='Sales_USD', y='Profit_USD')

最后,我们可以使用matplotlib绘制每月的销售额。

df_monthly_sales = df_sales.set_index('Order_Date').resample('M').sum()

plt.plot(df_monthly_sales['Sales_USD'])
plt.xlabel('Month')
plt.ylabel('Sales (USD)')
  1. 发现相关性

此时,我们已经完成了关于数据的探索性数据分析,接下来我们需要探究销售额和其他特征之间的相关性。我们将使用特征工程来创建新特征,并使用scikit-learn的相关性矩阵和热力图来探索特征之间的相关性。

特征工程

首先,我们将DataFrame中的分类特征转换为数字特征。

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
df_sales['Customer_Name_Encoded'] = le.fit_transform(df_sales['Customer_Name'])
df_sales['Product_Name_Encoded'] = le.fit_transform(df_sales['Product_Name'])
df_sales['Product_Category_Encoded'] = le.fit_transform(df_sales['Product_Category'])

然后我们将数据划分为特征和目标列。

X = df_sales.drop(['Sales_USD'], axis=1)
y = df_sales['Sales_USD']

接下来,我们将使用scikit-learn的相关性矩阵和热力图来探索特征之间的相关性。

corr_matrix = df_sales.corr()
sns.heatmap(corr_matrix, annot=True)
  1. 开发模型

现在,我们将使用scikit-learn训练和比较不同模型的性能。

首先,我们需要对数据进行划分,将数据集划分为训练集和测试集。

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

接下来,我们将比较不同模型的性能,包括线性回归、决策树和随机森林模型。

from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

linear_model = LinearRegression()
tree_model = DecisionTreeRegressor(random_state=42)
forest_model = RandomForestRegressor(random_state=42)

models = [linear_model, tree_model, forest_model]

for model in models:
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    mse = mean_squared_error(y_test, y_pred)
    mae = mean_absolute_error(y_test, y_pred)
    r2 = r2_score(y_test, y_pred)
    print(f"Model: {type(model).__name__} | MSE: {mse} | MAE: {mae} | R2: {r2}")
  1. 模型部署

最后,我们将使用训练好的模型对新数据进行预测。

new_data = pd.read_csv('new_data.csv')
new_data = new_data.drop(['Order ID', 'Ship Date', 'Ship Mode'], axis=1)
new_data['Order_Date'] = pd.to_datetime(new_data['Order_Date'])
new_data['Product_Category'] = new_data['Product Name'].str.split(' - ', expand=True)[0]
new_data['Customer_Name_Encoded'] = le.fit_transform(new_data['Customer Name'])
new_data['Product_Name_Encoded'] = le.fit_transform(new_data['Product Name'])
new_data['Product_Category_Encoded'] = le.fit_transform(new_data['Product_Category'])

new_X = new_data.drop(['Sales'], axis=1)
new_y = new_data['Sales']

forest_model.fit(X, y)
new_y_pred = forest_model.predict(new_X)

print(new_y_pred)

Python数据分析代码实战

在这个实战中,我们将使用Python对一个电商数据集进行分析,以了解访问量、销售额、订单数量等指标的趋势,并针对性地提出一些策略性建议。具体来说,我们将:

  1. 载入数据集
  2. 进行数据预处理,包括清洗和转换数据
  3. 进行探索性数据分析,包括数据可视化和统计分析
  4. 发现相关性,包括特征工程和相关性分析
  5. 提出策略性建议

这个实战将展示如何使用Python的pandas、matplotlib、seaborn等库来处理和分析数据。

  1. 载入数据集

我们首先需要导入需要的库,包括pandas、matplotlib等。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

然后我们将数据集加载到一个DataFrame中。

df = pd.read_csv('ecommerce_data.csv', encoding='ISO-8859-1')
  1. 数据预处理

在开始探索数据之前,我们需要对数据进行一些预处理。这包括检查缺失值、清洗数据、转换数据类型等。

首先,我们检查缺失值并删除含有缺失值的行。

df.isnull().sum()
df = df.dropna()

然后我们删除不需要的列。

df = df.drop(['InvoiceNo', 'StockCode', 'Description', 'InvoiceDate', 'Country'], axis=1)

接下来,我们需要清洗数据,包括转换数据类型和去除异常值等。

df['CustomerID'] = df['CustomerID'].astype(int)
df['UnitPrice'] = df['UnitPrice'].astype(float)

df = df[(df['Quantity'] > 0) & (df['UnitPrice'] > 0)]

最后,我们需要确保每个数据类型都正确。

df.dtypes
  1. 探索性数据分析

现在我们可以开始探索销售数据集。我们需要使用pandas和seaborn这两个库进行探索性数据分析。

首先,我们可以使用describe函数来获取数据的基本统计信息。

df.describe()

然后我们可以使用seaborn绘制每月的销售额变化。

df['InvoiceMonth'] = df['InvoiceYearMonth'].apply(lambda x: x[:4] + '-' + x[4:])

monthly_sales = df.groupby(['InvoiceMonth'])['Sales'].sum().reset_index()

plt.figure(figsize=(12, 6))
sns.lineplot(data=monthly_sales, x='InvoiceMonth', y='Sales')
plt.xticks(rotation=45)
plt.xlabel('Month')
plt.ylabel('Sales')
plt.show()

接下来,我们可以绘制每个国家的销售额分布。

country_sales = df.groupby(['Country'])['Sales'].sum().reset_index().sort_values(by='Sales', ascending=False)

plt.figure(figsize=(12, 6))
sns.barplot(data=country_sales, x='Country', y='Sales')
plt.xticks(rotation=45)
plt.xlabel('Country')
plt.ylabel('Sales')
plt.show()

然后我们可以绘制每个产品种类的销售额。

category_sales = df.groupby(['Category'])['Sales'].sum().reset_index().sort_values(by='Sales', ascending=False)

plt.figure(figsize=(12, 6))
sns.barplot(data=category_sales, x='Category', y='Sales')
plt.xticks(rotation=45)
plt.xlabel('Category')
plt.ylabel('Sales')
plt.show()

最后,我们可以使用seaborn的散点图和回归线来显示销售额和订单数量之间的关系。

sns.regplot(data=df, x='Quantity', y='Sales')
  1. 发现相关性

此时,我们已经完成了关于数据的探索性数据分析,接下来我们需要探究销售额和其他特征之间的相关性。我们将使用特征工程来创建新特征,并使用scikit-learn的相关性矩阵和热力图来探索特征之间的相关性。

特征工程

我们需要将类别特征转换为数字特征。

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
df['Category_Encoded'] = le.fit_transform(df['Category'])
df['City_Encoded'] = le.fit_transform(df['City'])
df['State_Encoded'] = le.fit_transform(df['State'])

然后我们将数据划分为特征和目标列。

X = df.drop(['Sales'], axis=1)
y = df['Sales']

接下来,我们将使用scikit-learn的相关性矩阵和热力图来探索特征之间的相关性。

corr_matrix = df.corr()
sns.heatmap(corr_matrix, annot=True)
  1. 提出策略性建议

对于一个电商平台,如何优化销售额是非常重要的。根据以上的数据分析和特征相关性分析,我们可以提出以下几点策略性建议:

  • 优化用户购物体验:通过数据分析发现,用户关于退货产品的数量和总支出的相关性不高,表明退货率不是购物体验的决定因素。因此,电商平台应该致力于优化网站的购物体验,例如提供更多优惠券和折扣,在用户购物车页面提示更多相关产品等。
  • 提高广告效果:通过数据分析发现,销售额和广告支出之间的相关性比较高。因此,电商平台应该提高其广告效果,包括改进广告文案和图片,选择更好的广告渠道,以及调整广告投放策略。
  • 优化产品种类:通过数据分析发现,不同产品种类之间的销售额差异较大,因此,电商平台应该优化产品种类,在销售额较高的产品种类上进行加强和扩展。

结论

在本实例中,我们使用Python对电商数据集进行了探索性数据分析和特征相关性分析,并基于这些分析提出了策略性建议,以改进销售业绩。这个实例展示了如何使用Python进行数据分析和建立预测模型,提供了一种将Python应用于实际业务问题的方法。

在本实例中,我们使用Python对销售数据集进行探索性数据分析和特征工程,并使用线性回归、决策树和随机森林模型进行训练和比较。最后,我们使用训练好的模型对新数据进行了预测。这个实例展示了如何使用Python进行数据分析和建立预测模型,提供了一种将Python应用于实际业务问题的方法。

06-24 17:06