Python教程-Python数据分析
数据分析可以帮助我们从数据中获取有用信息,并为我们的问题提供解决方案。此外,根据观察到的模式,我们可以预测不同业务政策的结果。
理解数据分析的基础
数据
我们在分析过程中处理的数据类型主要是csv(逗号分隔值)格式。通常,csv文件的第一行表示列标题。
可用的包
在Python包中有多种库可供使用,可以在不编写冗长代码的情况下方便地实施。
一些包的示例包括:
- 科学计算库,如NumPy、Pandas和SciPy。
- 可视化库,如Matplotlib和seaborn。
- 算法库,如scikit-learn和statsmodels。
导入和导出数据集
在导入数据集时,我们必须注意的两个关键点是:
- 格式 - 它指的是文件的编码方式。突出的格式示例包括.csv、.xlsx、.json等。
- 文件路径 - 文件路径指的是文件存储的位置。可以在任何驱动器或某些在线资源中找到。
可以这样完成:
示例 -
import pandas as pd
path=" "
df = pd.read_csv(path)
如果数据集不包含标题行,我们可以这样指定:
df = pd.read_csv(path,header=None)
要查看数据集的前五行和后五行,可以使用df.head()和df.tail()。
让我们看看如何导出数据,如果我们有一个以.csv格式存在的文件,那么:
path = " "
df.to_excel(path)
数据整理
数据整理是将数据从原始格式转换为可用于分析的格式的过程。
让我们看看这部分包括什么内容:
如何处理缺失值?
缺失值 - 由于信息不可用,某些条目为空白。通常用NaN、?或0表示。
让我们讨论如何处理它们:
最佳选择是用平均数替换数值变量,用众数替换分类变量。
有时可能会出现这样的情况,我们必须删除缺失值,可以使用:
df.dropna()
如果要删除行,必须指定轴为0。如果要删除列,必须指定轴为1。
此外,如果希望这些更改直接应用于数据集,还需指定一个参数 inplace=True。
现在让我们看看如何替换值:
语法是:
df.replace(missing value, new value)
在这里,我们将创建一个变量,并将其存储在属性的平均值中(我们要替换值的属性):
mean=df["attribute name"].mean()
df["attribute name"].replace(np.nan,mean)
如何进行数据格式化?
数据格式化是将数据呈现为可理解格式的过程。例如,更改变量名称以使其可理解。
数据归一化
数据集中的特征具有可能导致偏倚预测的值。因此,必须将它们带到可比较的范围内。
为此,我们可以在属性上使用以下技术:
- 简单特征缩放 Xn=Xold/Xmax
- 最小-最大方法 Xn=Xold-Xmin/Xmax-Xmin
- Z分数 Xn=Xold-µ/σ µ - 平均值 σ - 标准差
如何将分类变量转换为数值变量?
在此情况下,我们进行了一个称为“独热编码”的过程,假设有一个包含分类值的属性。我们将从可能性中生成虚拟变量,并根据它们在属性中的出现情况分配0或1。
要将分类变量转换为0或1的虚拟变量,我们将使用:
pandas.get_dummies(df["attribute-name"])
This will generate the expected results.
Python中的分箱
这是将数值变量转换为分类变量的过程。
假设我们从数据集中取出了一个属性'price'。我们可以根据范围将其数据分为三个类别,然后用名称表示,例如低价、中价和高价。
我们可以使用 linspace() 方法获取范围:
bin = np.linspace(min(df["attribute-name"]),max(df["attribute-name"]),4)
cat_names=["low-price","mid-price","high-price"]
df["bin_name"]=pd.cut(df["attribute-name"],bin,labels=cat_names)
探索性数据分析
统计信息
我们可以使用 describe() 方法来查看数据集的统计摘要。可以使用 value_counts() 方法总结分类变量。
使用GroupBy
pandas的groupby()方法可应用于分类变量。它根据不同的类别对子集进行分组。可以涉及单个或多个变量。
让我们看一个示例,以帮助我们理解如何在Python中使用它:
df_att=df[['attribute1', 'attribute2', 'attribute3']]
df_g=df_att.groupby(['attribute1', 'attribute2'], as_index=False).mean()
df_g
相关性
相关性度量两个变量相互依赖的程度。
通过可视化来检查两个变量之间存在什么样的相关性。我们可以绘制图形并解释一个属性值的上升如何影响另一个属性。
从统计角度来看,我们可以使用Pearson相关性来获取相关性。它提供了相关性系数和P值。
让我们看看相关性的标准:
相关系数 | 关系 |
---|---|
1. 接近+1 | 大正相关 |
2. 接近-1 | 大负相关 |
3. 接近0 | 无相关关系存在 |
P-值 | 确定性 |
---|---|
P-值<0.001 | 强 |
P-值<0.05 | 中等 |
P-值<0.1 | 弱 |
P-值>0.1 | 无 |
我们可以使用scipy统计包在我们的代码中使用它。
假设我们想要计算两个属性,属性1和属性2之间的相关性:
pearson_coef,p_value=stats.pearsonr(df["attribute1"],df["attribute2"]).
此外,要检查所有变量之间的相关性,我们可以创建一个热图。
两个分类变量之间的关系
可以使用卡方方法来计算两个分类变量之间的关系。
scipy.stats.chi2_contingency(cont_table, correction=True)
如何开发模型?
首先,让我们了解什么是模型?
模型可以指代一个方程,帮助我们预测结果。
- 线性回归和多元线性回归
线性回归 - 顾名思义,它仅涉及一个独立变量来进行预测。
多元回归 - 它涉及多个独立变量来进行预测。
简单线性回归的方程可以表示为:
y=b0x+b1
在这里,
y-依赖变量
x-独立变量
b0-斜率
b1-截距
要在Python中实施线性回归:
from sklearn.linear_model import LinearRegression
lm=LinearRegression()
X=df["attribute-name1"]
Y=df["attribute-name1"]
lm.fit(X,Y)
yp=lm.predict(X)
使用可视化评估我们的模型
创建图表是一个好的实践,因为它们显示了相关性的强度以及关系的方向是正向还是负向。
让我们看看不同的图表,可以帮助我们评估我们的模型:
1.使用回归图
import seaborn as sns
sns.regplot(x="attribute1",y="attribute2",data=df)
plt.ylim(0,)
2.使用残差图
import seaborn as sns
sns.residplot(df["attribute1"],df["attribute2"])
在样本内评估
在这里,我们将讨论如何以数字方式评估我们的模型,以两种方式来完成:
1. 均方误差(MSE)
该方法取实际值与预测值之间的差值,对其平方,然后计算它们的平均值。
在Python中,可以使用以下方式实现:
from sklearn.metrics
import mean_squared_error
mean_squared_error(df['target-variable'],Y_predict_simple_fit)
2. R-平方
R-平方也被称为确定系数。它显示数据与拟合回归线的拟合程度。可以使用 score() 方法在Python中使用它。
X=df["attribute-1"]
Y=df["attribute-2"]
lm.fit(X,Y)
lm.score(X,Y)
决策制定
简而言之,在评估模型时,我们必须注意以下几点:
- 使用可视化
- 使用数值评估方法。
如何评估模型?
评估我们的模型是一个重要的元素,因为它告诉我们数据与模型的拟合程度。现在,我们将讨论如何使用训练数据来预测结果。
关键思想是将数据集分为训练集和测试集。训练数据集用于构建模型,测试数据集用于评估模型的性能。
可以在Python中实现它:
from sklearn.model_selection import train_test_split
_train,y_train,x_test,y_test=train_test_split(x_data,y_data,test_size=' ',random_state=' ')
过拟合和欠拟合
过拟合- 当模型过于简单以适应数据时的情况。
欠拟合 - 当模型更容易调整噪声因素而不是函数时的情况。
岭回归
当涉及到十次方变量时使用岭回归。在这里,我们引入了一个称为alpha的因子。让我们看看如何在Python中实现它。
from sklearn.linear_model import Ridge
RModel=Ridge(alpha=0.1)
RModel.fit(X,Y)
Yp=RModel.predict(X)