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()
如果我们想要删除一行,我们必须将axis指定为0。如果我们想要删除一列,我们必须将axis指定为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中的Binning
它指的是将数值变量转换为分类变量的过程。
假设我们从数据集中获取了一个名为’price’的属性。我们可以根据范围将其数据分为三个类别,并用low-price、mid-price和high-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() 方法来查找数据集的统计摘要。可以使用 df.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
相关性
相关性衡量了两个变量之间的相互依赖程度。
通过绘制图表并解释一个属性值的上升如何影响另一个属性值来对两个变量之间存在的相关性进行可视化。
在统计学方面,我们可以使用皮尔逊相关系数来获取相关性。它提供了相关系数和P值。
让我们来看看以下准则-
CORRELATION COEFFICIENT | RELATIONSHIP
—|—
1. Close to +1 | Large Positive
2. Close to -1 | Large Negative
3. Close to 0 | No relationship exists
P-VALUE | CERTAINITY
我们可以使用scipy stat包在我们的代码中使用它。
假设我们想要计算两个属性attribute1和attribute2之间的相关性-
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-squared
R-squared也被称为确定系数。它显示了数据与拟合回归线的接近程度。它可以使用Python的 score() 方法来计算。
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
x_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)