Python中分析数据

2025 年 1 月 5 日 | 11 分钟阅读

什么是数据分析?

数据分析是从数据中提取有用信息,并根据过去的数据预测趋势的过程。数据分析包括各种方法,例如收集、修改和组织数据。数据分析用于将非结构化数据转换为有用信息,这些信息可用于解决许多业务问题。我们可以分析数据以图表、图像、表格和图形的形式获取见解和统计数据,从而更轻松地通过可视化来理解和分析信息。

数据分析方法论

  1. 数据收集
  2. 数据准备
  3. 数据探索
  4. 数据建模
  5. 数据评估

让我们详细了解这些步骤。

1. 数据收集

数据收集是数据分析的第一步,从各种来源、数据库、社交媒体等收集数据。

2. 数据准备

下一步是准备数据,在此过程中,数据被清理并检查是否存在任何空值。它会删除重复项和空值,并将数据转换为合适的格式。它使数据为后续过程中的分析做好准备。

3. 数据探索

数据探索是通过使用不同的图表和图形来探索和可视化数据,以发现数据中未见的趋势。可视化数据使数据更易于理解。

4. 数据建模

数据建模是构建模型并使用各种机器学习算法对其进行训练的过程,这些算法可用于进行未来预测和从数据中提取趋势。

5. 数据评估

数据评估是在分析、评估准确性并将结果与预期结果进行比较后得出结果的过程。

Python 数据分析

数据分析可以使用不同的编程语言完成,包括 Python、R 等。Python 是更受青睐的数据分析语言。

  1. Python 语法简单,简单易懂,使其成为数据分析的理想语言。
  2. Python 是一门灵活的语言,并提供用于数据分析的不同程序包。
  3. Python 提供数据可视化库,可用于分析和提取数据中的见解。
  4. 使用 Python 可以更轻松地进行数据操作和统计。

数据分析程序包和库

Python 为数据分析提供了各种库。它们是:

  • Pandas: Pandas 是一个用于数据分析的 Python 库。它处理缺失数据,执行数学计算,并从 CSV、JSON、文本等各种文件源读取数据。
  • NumPy: NumPy 是一个提供多维数组的库,可用于线性代数计算。
  • Matplotlib: 该库用于制作交互式图表、图形和图形,有助于可视化数据并更轻松地进行分析。
  • SciPy: 该库提供了各种统计、代数方程等问题的算法。
  • Scikit-Learn: Scikit-Learn 库有助于创建回归、分类和聚类模型。它提供了不同的模块来实现这些模型。

让我们在 Python 中实现这些库进行数据分析。

使用 NumPy 分析数据

NumPy 是 Python 中用于数据分析的库,用于数组处理。它提供多维数组的计算以及用于数组的各种其他工具。

什么是 NumPy 数组?

数组是相同类型元素的集合。由正整数元组索引。整数可以给出数组的大小,称为数组的形状。我们可以创建不同秩的数组。秩是数组的维度(1D、2D、3D 等)。数组也可以使用不同的数据类型创建,如列表、元组、字典等。数组索引从 0 开始。数组元素的索引由范围 0 到 n-1 定义,其中 n 是数组中的元素数量。例如,数组 a 有 10 个元素,我们想搜索数组的第 5 个元素。第 5 个元素的索引将是 a[4],因为数组从 0 索引开始。

NumPy 提供了不同的函数和方法来创建和转换数组。我们可以通过多种方式使用数组来分析数据。

让我们来实现 NumPy 数组并对其进行数据分析。

首先,我们将使用 pip 命令安装 numpy 库

安装库后,我们将导入它

代码

输出

The array is : [ 78 889  12  45 566  90]
The type of arr is :  <class 'numpy.ndarray'>
=

我们使用 np.array() 函数创建了一个简单的 numpy 数组。我们在数组中添加了整数元素。然后,我们打印了数组元素及其类型。

现在,我们将创建具有不同维度的数组。

代码

输出

Array 1: [0]
Array 2: [[0 0]
 [0 0]]
Array 3: [['' '' '']
 ['' '' '']
 ['' '' '']] <class 'numpy.ndarray'>

我们使用 np.empty() 函数创建了多个具有不同维度的数组。我们可以使用 np.empty() 函数创建多维数组。

我们可以创建多维数组并直接使用 np.array() 添加值。

代码

输出

Array 4: [[1 2]
 [2 2]
 [3 4]]

我们使用 np.array() 函数创建了一个 3 x 2 的数组并向其中添加了值。

我们可以在数组上进行数学计算。

代码

输出

Addition of array 1 and array 2: [[3 4]
 [7 9]]
Subtraction of array 1 and array 2: [[-1  0]
 [-1 -1]]
Multiplication of array 1 and array 2: [[ 2  4]
 [12 20]]
Division of array 1 and array 2: [[0.5  1.  ]
 [0.75 0.8 ]]

我们创建了两个不同的 2 x 2 维度的数组。然后,我们执行了不同的数学函数,包括加法、减法、除法和乘法。

我们可以使用切片、索引等不同函数来转换数组。

  • 数组索引是使用其索引来访问数组元素。索引从 0 开始。

代码

输出

arr[5]: 34
arr[10]: 12
arr[2]: 45
arr[0]: 1

代码

输出

arr2[3][2]; 45
arr2[1][0]: 10
arr2[2][2]: 56
arr2[3][0]: 1
arr2[0][2]: 3

我们创建了一个 4 x 3 维度的多维数组,并打印了不同索引的元素。

  • 切片是一种切片数组元素的方法。我们可以使用切片返回一个元素范围。让我们在 Python 中实现数组的切片。

代码

输出

arr2[2:5]: [ 45  67 100]
arr2[2:7]: [ 45  67 100  34 566]

我们切片了一个具有不同范围的一维数组。

代码

输出

arr2[1:3]: [[19 64 82]
 [90 35 46]]

我们切片了一个具有不同范围的多维数组。

Numpy 还提供了其他函数,如连接数组、删除多个元素、向数组添加元素、排序、搜索、计算均值、中位数和众数等。

使用 Pandas 分析数据

Pandas 是 Python 中用于数据分析的库。通常,它处理大量数据集。它可以读取 CSV、JSON、文本等文件。它具有不同的功能,例如转换数据,包括检查和处理空值和重复值。它清理、探索、转换和分析数据。

Pandas 使用带标签的数据,它提供了不同的数据结构。它提供了两种数据结构:Series 和 DataFrame。

什么是 Pandas Series?

Pandas Series 是一种可以存储任何数据的 1D 标签数组。Pandas 中的 Series 可以被视为 Excel 工作表中的一列。标签称为索引。在 Pandas Series 中,可以使用索引号对其进行标记。它从索引 0 开始。

让我们在 Python 中实现 Pandas Series。

首先,我们将使用 pip 命令安装库

安装后,我们必须导入库。

现在,我们将创建一个 Pandas Series 并添加数据。

代码

输出

SERIES:
0    1
1    2
2    3
3    4
4    5
5    6
6    7
dtype: Int64

我们首先导入了库,然后使用了 pd.Series() 方法,创建了一个 Series 并向其中添加了数据。

什么是 Pandas DataFrame?

Pandas DataFrame 是一种具有行和列的二维数据结构。DataFrame。DataFrame 由行、列和数据组成。它可以使用 dataframe() 方法创建。

让我们在 Python 中实现 Pandas DataFrame。

代码

输出

	0
0	1
1	2
2	3
3	4
4	5
5	6
6	7

我们已经导入了库,并正在使用 pd.DataFrame(),我们创建了一个 DataFrame 并添加了数据。

我们可以使用 Pandas 读取 CSV 数据并从中创建 DataFrame。

代码

输出

	Index	Organization Id	Name	Website	Country	Description	Founded	Industry	Number of employees
0	1	FAB0d41d5b5d22c	Ferrell LLC	https://price.net/	Papua New Guinea	Horizontal empowering knowledgebase	1990	Plastics	3498
1	2	6A7EdDEA9FaDC52	Mckinney, Riley, and Day	http://www.hall-buchanan.info/	Finland	User-centric system-worthy leverage	2015	Glass / Ceramics / Concrete	4952
2	3	0bFED1ADAE4bcC1	Hester Ltd	http://sullivan-reed.com/	China	Switchable scalable moratorium	1971	Public Safety	5287
3	4	2bFC1Be8a4ce42f	Holder-Sellers	https://becker.com/	Turkmenistan	De-engineered systemic artificial intelligence	2004	Automotive	921
4	5	9eE8A6a4Eb96C24	Mayer Group	http://www.brewer.com/	Mauritius	Synchronized needs-based challenge	1991	Transportation	7870

我们导入了库,并使用 read_csv() 函数读取了客户数据集,包括不同组织的数据及其行业类型;然后我们创建了 DataFrame。使用 data.head() 函数,我们读取了数据集的前 5 条记录。

现在,我们将使用不同的函数和方法来分析数据集。我们将通过检查和处理重复项和空值以及许多其他函数来探索和分析数据。

检查空值

代码

输出

Index                  0
Organization Id        0
Name                   0
Website                0
Country                0
Description            0
Founded                0
Industry               0
Number of employees    0
dtype: int64

使用 data.isnull().sum() 函数,我们检查了数据集中的空值。它将汇总数据集中任何存在的空值。在此数据集中,没有空值。

获取 DataFrame 的简要信息。

代码

输出

<class 'pandas.core.frame.DataFrame'>
Int64Index: 100 entries, 63 to 65
Data columns (total 9 columns):
 #   Column               Non-Null Count  Dtype 
---  ------               --------------  ----- 
 0   Index                100 non-null    int64 
 1   Organization Id      100 non-null    object
 2   Name                 100 non-null    object
 3   Website              100 non-null    object
 4   Country              100 non-null    object
 5   Description          100 non-null    object
 6   Founded              100 non-null    int64 
 7   Industry             100 non-null    object
 8   Number of employees  100 non-null    int64 
dtypes: int64(3), object(6)
memory usage: 7.8+ KB

使用 data.info() 函数,我们获取了数据集的信息。它包括数据集的列、数据类型、数据集中的条目数以及非空值计数。

获取数据描述

代码

输出

	Index	Founded	Number of employees
count	100.000000	100.000000	100.000000
mean	50.500000	1995.410000	4964.860000
std	29.011492	15.744228	2850.859799
min	1.000000	1970.000000	236.000000
25%	25.750000	1983.500000	2741.250000
50%	50.500000	1995.000000	4941.500000
75%	75.250000	2010.250000	7558.000000
max	100.000000	2021.000000	9995.000000

我们使用 data.describe() 函数来获取 DataFrame 中数据的描述。它提供了数据的相关矩阵。

使用 Pandas 进行探索性数据分析是 Python 数据分析中的一个重要概念。它涉及检查和处理数据中的不完善之处和错误,例如删除重复项、更改数据格式、操作数据集的列等等。

使用 Matplotlib 分析数据

Matplotlib 是一个库,用于创建交互式图表、图形和表格,包括条形图、散点图、折线图等,用于探索和分析数据。它有助于更有效地理解和分析数据。这是一个简单易用的语言,用于以图形形式可视化数据。

要实现 matplotlib,我们需要使用 pip 命令安装该库

Matplotlib 有一个名为 Pyplot 的模块,它提供了用于创建图表和图形的不同函数。

首先,我们将导入 matplotlib 库并创建图表和图形来分析数据。

现在,我们将创建图表和图形,包括条形图、直方图、散点图等。

为了创建图表和图形,我们将使用 iris 数据集。我们使用 pandas 库的 read_csv() 函数读取了 csv 文件。然后,我们从中创建了 DataFrame。

代码

输出

	Id	SepalLengthCm	SepalWidthCm	PetalLengthCm	PetalWidthCm	Species
0	 1	     5.1	     3.5	         1.4	         0.2	      Iris-setosa
1	 2	     4.9	     3.0	         1.4	         0.2	      Iris-setosa
2	 3	     4.7	     3.2	         1.3	         0.2	      Iris-setosa
3	 4	     4.6	     3.1	         1.5	         0.2	      Iris-setosa
4	 5	     5.0	     3.6	         1.4	         0.2	      Iris-setosa

我们导入了 pandas 库,使用 read_csv() 方法读取了 iris 数据,然后使用 head() 函数打印了前 5 条记录。

创建条形图

代码

输出

<function matplotlib.pyplot.show(close=None, block=None)>

Analysing Data in Python

我们导入了 matplotlib.pyplot 库,并使用 plt.bar() 在 SepalLengthCm 和 PetalLengthCm 之间创建了一个条形图。使用 title() 函数,我们为图形添加了标题。

创建直方图

代码

输出

<function matplotlib.pyplot.show(close=None, block=None)>

Analysing Data in Python

我们导入了 matplotlib.pyplot 库,并使用 plt.hist() 创建了 PetalWidthCm 的直方图。使用 title() 函数,我们为图形添加了标题。

创建散点图

代码

输出

<function matplotlib.pyplot.show(close=None, block=None)>

Analysing Data in Python

我们导入了 matplotlib.pyplot 库,并使用 plt.scatter() 函数在 SepalLengthCm 和 PetalLengthCm 之间创建了一个散点图。使用 title() 函数,我们为图形添加了标题。

Python 为可视化数据和创建交互式图表提供了另一个库。Seaborn 是一个用于创建图表和图形的交互式库。它类似于 matplotlib,但有助于创建比 matplotlib 更具交互性和更丰富的图形。

为了实现 seaborn,我们必须使用 pip 命令进行安装

然后,我们将导入库

我们可以创建不同的图表,如热力图、箱线图等。

创建热力图

代码

输出

Analysing Data in Python

我们导入了库,并使用 sns.heatmap() 函数创建了热力图。