最全的数据科学常用pandas教程

1. pandas简介

pandas是Python库中一个非常强大的数据分析工具,它提供了易于使用的数据结构和数据操作工具,可帮助我们快速方便地将数据集合成员数据进行转换和应用这些数据,称为“数据清洗”和“预处理”。

Pandas是numpy 库的一个封装,因此与numpy结合使用更为完美。通过使用pandas,您可以对SDS(Structured Data Set)完成三个操作: load, prepare, extract.(SDS是一个由行和列表示数据元素的矩形结构。)

2. pandas库的导入

在使用pandas 库之前,需要在本地计算机上安装pandas库,安装命令如下:

pip install pandas

安装pandas库之后,您可以通过以下方式导入pandas库:

import pandas as pd

3. pandas库数据结构

Pandas 库提供了两种数据结构 - Series和DataFrame。

3.1 Series数据结构

Series 是一种类似于一维数组的对象,可以存储任何类型的数据(整数,字符串,浮点数,Python对象等)。系列的轴标签统称为索引。以下是创建Series对象的基本语法:

import pandas as pd

data = pd.Series([0.25, 0.5, 0.75, 1.0])

print(data)

这将输出以下内容:

0    0.25

1 0.50

2 0.75

3 1.00

dtype: float64

可以看到,输出结果中第一列是索引,第二列是数据。

3.2 DataFrame数据结构

DataFrame是pandas中最重要的数据结构之一。它是一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等)。DataFrame既有行索引,也有列索引,可以被视为由Series组成的参数,可以看作是一个Series字典。

可以通过以下方式创建DataFrame对象:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],'age': [25, 26, 25, 23],'city': ['Beijing', 'Shanghai','New York', 'London']}

df = pd.DataFrame(data, columns=['name', 'age', 'city'])

print(df)

这将输出以下内容:

       name  age      city

0 Alice 25 Beijing

1 Bob 26 Shanghai

2 Charlie 25 New York

3 David 23 London

4. pandas库数据操作

4.1 数据读取

pandas 库可以非常容易地读取和写入各种格式的文件,如 .csv、.xlsx等格式的文件。例如,要读取csv文件,可以使用pandas中的read_csv()函数:

data = pd.read_csv('data.csv')

print(data)

4.2 数据清洗与预处理

数据的清洗和预处理是数据分析中的重要步骤。使用pandas库,我们可以轻松地完成数据转换、数据填充、数据清洗、去除重复数据等操作。

4.2.1 去除重复数据

请看以下示例:

import pandas as pd

data = pd.DataFrame({

'name': ['Alice', 'Bob', 'Charlie', 'David', 'Bob'],

'age': [25, 26, 25, 23, 27],

'gender': ['F', 'M', 'M', 'M', 'M']

})

data.drop_duplicates(subset=['name','age'], inplace=True)

print(data)

这将输出以下内容:

       name  age gender

0 Alice 25 F

1 Bob 26 M

2 Charlie 25 M

3 David 23 M

4.2.2 缺失值填充

请看以下示例:

import pandas as pd

import numpy as np

data = pd.DataFrame({

'name': ['Alice', 'Bob', 'Charlie', 'David'],

'age': [25, np.NaN, 25, 23],

'gender': ['F', 'M', np.NaN, 'M']

})

data['age'].fillna(data['age'].mean(), inplace=True)

data['gender'].fillna('Unknown', inplace=True)

print(data)

这将输出以下内容:

       name   age   gender

0 Alice 25.0 F

1 Bob 24.3 M

2 Charlie 25.0 Unknown

3 David 23.0 M

4.2.3 数据合并与拆分

为了更好地理解数据合并和拆分,在此我们先创建两个dataframe:

import pandas as pd

data1 = pd.DataFrame({

'id': [1, 2, 3, 4, 5],

'name': ['Alice', 'Bob', 'Charlie', 'David', 'Esther'],

'age': [25, 26, 25, 23, 27]

})

data2 = pd.DataFrame({

'id': [1, 2, 3, 6, 7],

'gender': ['F', 'M', 'M', 'F', 'M'],

'city': ['Beijing', 'Shanghai','New York', 'London', 'Paris']

})

现在,我们假设要将data2中的gender和city两个列合并到data1中,示例代码如下:

merged = pd.merge(data1, data2, how='outer', on='id')

print(merged)

这将输出以下内容:

   id     name   age gender      city

0 1 Alice 25 F Beijing

1 2 Bob 26 M Shanghai

2 3 Charlie 25 M New York

3 4 David 23 NaN NaN

4 5 Esther 27 NaN NaN

5 6 NaN NaN F London

6 7 NaN NaN M Paris

现在,我们来看看如何将data1中的姓名和年龄列拆分成两个Series对象,示例代码如下:

s1 = data1['name']

s2 = data1['age']

print(s1)

print(s2)

这将分别输出以下内容:

0      Alice

1 Bob

2 Charlie

3 David

4 Esther

Name: name, dtype: object

0    25

1 26

2 25

3 23

4 27

Name: age, dtype: int64

总结

在本篇文章中,我们介绍了Python中用于数据科学的pandas库,并深入了解了它的数据结构、数据操作和常用函数。我相信,通过本篇文章的学习,您已经能够熟练使用pandas库进行数据分析和数据处理了。希望您在实际运用中取得好成果!

后端开发标签