快速入门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数据科学的人都非常重要。希望这篇文章能够帮助你解决一些数据科学方面的问题,并且对你在这个领域的更深入学习带来一些启示。