匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

快速入门Python数据科学,进行数据探索和建模

快速入门Python数据科学,进行数据探索和建模

Python是数据科学领域的瑰宝,是最受欢迎的数据科学语言之一。Python具有简单易学、强大的库支持等优势,逐渐取代了传统的数据科学语言,成为最主流的语言之一。

在这篇文章中,我们将通过一个简单的实例来介绍Python数据科学中的一些基本技术知识点,包括数据清洗、数据分析和建模等。让我们开始吧!

数据准备
首先,我们需要找到一个合适的数据集。我们将使用Kaggle的电子商务数据集,该数据集包含2010年12月1日至2011年12月9日期间的电子商务交易数据。

在开始之前,我们需要安装一些必要的Python库,包括Pandas、Numpy和Matplotlib。可以使用以下命令在终端上安装它们。

pip install pandas
pip install numpy
pip install matplotlib

数据清洗
首先,我们需要进行数据清洗,目的是清理并准备数据,以便进行分析和建模。在这里,我们将使用Pandas来读取和处理数据集。

import pandas as pd

# 读取csv文件
df = pd.read_csv("Online_Retail.csv", encoding='cp1252')

# 查看前5行数据
df.head()

输出:

InvoiceNo  StockCode    Description  Quantity InvoiceDate  UnitPrice  CustomerID         Country

0    536365     85123A  WHITE HANGING HEART T-LIGHT HOLDER         6  12/1/2010       2.55       17850  United Kingdom
1    536365      71053                 WHITE METAL LANTERN         6  12/1/2010       3.39       17850  United Kingdom
2    536365     84406B      CREAM CUPID HEARTS COAT HANGER         8  12/1/2010       2.75       17850  United Kingdom
3    536365     84029G  KNITTED UNION FLAG HOT WATER BOTTLE         6  12/1/2010       3.39       17850  United Kingdom
4    536365     84029E       RED WOOLLY HOTTIE WHITE HEART.         6  12/1/2010       3.39       17850  United Kingdom

我们可以看到,数据集中包含了很多条交易记录,并且有一些列可能并不需要,如InvoiceNo,StockCode和CustomerID等。我们可以使用Pandas的drop函数来删除这些列。

# 删除不需要的列
df.drop(['InvoiceNo','StockCode','CustomerID'], axis=1, inplace=True)

现在我们需要检查是否有缺失的数据。在这里,我们可以使用Pandas的isnull函数来检查每个列是否存在缺失值。

# 检查缺失值
df.isnull().sum()

输出:

Description     1454
Quantity            0
InvoiceDate         0
UnitPrice           0
Country             0
dtype: int64

我们可以看到,数据集中的Description列存在一些缺失值。我们可以使用Pandas的fillna函数来填充这些值。

# 填充缺失值
df['Description'].fillna(value="unknown", inplace=True)

现在,我们已经处理了数据集中的所有缺失值,可以开始进行数据分析。

数据分析
接下来,我们将进行数据分析,以便更好地了解我们的数据集。在这里,我们将使用Pandas和Matplotlib库来进行数据分析和可视化。

# 查看交易记录数
print("总共的交易记录数:", len(df.index))

# 查看交易的国家数量
print("交易发生的国家数量:", len(df['Country'].unique()))

# 按国家分组并统计交易记录数
country = df.groupby(['Country']).count()
print(country)

输出:

总共的交易记录数: 541909
交易发生的国家数量: 38
                             Description  Quantity  InvoiceDate  UnitPrice
Country                                                                   
Australia                            1259      1259         1259       1259
Austria                               401       401          401        401
Bahrain                                19        19           19         19
Belgium                              2069      2069         2069       2069
Brazil                                 32        32           32         32
Canada                                151       151          151        151
Channel Islands                       758       758          758        758
Cyprus                                622       622          622        622
Czech Republic                         25        25           25         25
Denmark                               389       389          389        389
EIRE                                 8196      8196         8196       8196
European Community                     60        60           60         60
Finland                               695       695          695        695
France                               8557      8557         8557       8557
Germany                              9495      9495         9495       9495
Greece                                145       145          145        145
Hong Kong                             288       288          288        288
Iceland                               182       182          182        182
Israel                                248       248          248        248
Italy                                3899      3899         3899       3899
Japan                                 358       358          358        358
Lebanon                                45        45           45         45
Lithuania                              35        35           35         35
Malta                                 127       127          127        127
Netherlands                          2371      2371         2371       2371
Norway                               1086      1086         1086       1086
Poland                                341       341          341        341
Portugal                             1519      1519         1519       1519
RSA                                    58        58           58         58
Saudi Arabia                           10        10           10         10
Singapore                             229       229          229        229
Spain                                2533      2533         2533       2533
Sweden                                462       462          462        462
Switzerland                          2002      2002         2002       2002
USA                                   291       291          291        291
United Arab Emirates                   68        68           68         68
United Kingdom                     495478    495478       495478     495478
Unspecified                           446       446          446        446

以上代码可以得到一些有用的信息。例如,我们可以看到在数据集中有38个不同的国家进行了交易,其中大部分的交易发生在英国,交易记录数为495478。此外,我们还可以看到数据中存在一些含有非英文字符的国家名称,例如EIRE和European Community等。如果需要对这些名称进行分析,我们需要进一步了解这些国家所代表的含义。

随着我们对数据集的了解越来越深入,我们可以使用更高级的分析方法来挖掘更多信息。

建模
现在,我们已经对数据集有了一定的了解,可以开始使用Pandas和scikit-learn库来进行建模了。

在这里,我们将使用线性回归模型来预测销售量与单价之间的关系。线性回归是一种广泛使用的模型,可以预测连续变量的值(例如在这里的销售量)。我们将使用scikit-learn库来实现这个模型。

from sklearn.linear_model import LinearRegression

# 准备数据
X = df['UnitPrice'].values.reshape(-1,1)
y = df['Quantity'].values.reshape(-1,1)

# 实例化模型
model = LinearRegression()

# 模型拟合
model.fit(X, y)

# 打印模型得分
print("模型得分:", model.score(X, y))

输出:

模型得分: 0.0001827584813183646

在这里,我们使用了单变量线性回归模型。我们将单价作为自变量X,销售量作为因变量y。可以看到,模型得分非常低,这意味着这个线性模型并不适合对这个数据集进行预测。

总结
在这篇文章中,我们介绍了如何使用Python进行数据探索和建模。我们使用了Pandas和Matplotlib来进行数据清洗和分析,使用scikit-learn库来实现线性回归模型。这些技能对于任何想要深入了解Python数据科学的人都非常重要。希望这篇文章能够帮助你解决一些数据科学方面的问题,并且对你在这个领域的更深入学习带来一些启示。