1.1 Pandas 简介


文档摘要

1.1 Pandas 简介 1.1 Pandas 简介 Pandas是一个强大的Python数据分析和处理库。它提供了高性能、易于使用的数据结构,以及用于分析这些数据结构的工具。Pandas是数据科学、机器学习和数据分析工作流程中不可或缺的一部分。 1.1.1 Pandas 的核心数据结构 Pandas主要基于两种数据结构:Series和DataFrame。理解这两种数据结构是掌握Pandas的基础。 Series: Series类似于一维数组,但它比NumPy数组更强大。Series可以包含任何数据类型(整数、字符串、浮点数、Python对象等),并且每个元素都有一个显式的索引。 DataFrame: DataFrame是一个表格型的数据结构,它包含一组有序的列,每列可以是不同的数据类型。

1.1 Pandas 简介

1.1 Pandas 简介

Pandas是一个强大的Python数据分析和处理库。它提供了高性能、易于使用的数据结构,以及用于分析这些数据结构的工具。Pandas是数据科学、机器学习和数据分析工作流程中不可或缺的一部分。

1.1.1 Pandas 的核心数据结构

Pandas主要基于两种数据结构:Series和DataFrame。理解这两种数据结构是掌握Pandas的基础。

  • Series: Series类似于一维数组,但它比NumPy数组更强大。Series可以包含任何数据类型(整数、字符串、浮点数、Python对象等),并且每个元素都有一个显式的索引。

  • DataFrame: DataFrame是一个表格型的数据结构,它包含一组有序的列,每列可以是不同的数据类型。DataFrame可以看作是由Series组成的字典,它们共享一个公共的索引。

以下是一个mermaid图,展示了Series和DataFrame的关系:

1.1.2 Pandas 的主要特点

  • 数据对齐: Pandas可以自动对齐不同数据结构的数据,这对于处理缺失数据非常有用。

  • 数据清洗: Pandas提供了处理缺失数据(NaN)、过滤数据、转换数据等功能。

  • 数据转换: Pandas支持数据的合并、连接、重塑、切片、以及透视等操作。

  • 数据分析: Pandas可以进行描述性统计分析、分组分析、时间序列分析等。

  • 数据可视化: Pandas可以与Matplotlib和Seaborn等库集成,方便数据可视化。

  • 高性能: Pandas底层使用NumPy实现,因此具有高性能。

1.1.3 Pandas 的安装

可以使用pip安装Pandas:

pip install pandas

1.1.4 Pandas 的导入

通常,我们使用以下方式导入Pandas:

import pandas as pd

1.1.5 Series 的创建与使用

1. 从列表创建Series

import pandas as pd data = [10, 20, 30, 40, 50] s = pd.Series(data) print(s)

输出:

0 10 1 20 2 30 3 40 4 50 dtype: int64

代码详解:

  • pd.Series(data):创建一个Series对象,数据来自列表data

  • 输出结果显示了Series的索引(左侧)和对应的值(右侧)。

  • dtype: int64表示Series的数据类型是64位整数。

2. 指定索引创建Series

import pandas as pd data = [10, 20, 30, 40, 50] index = ['a', 'b', 'c', 'd', 'e'] s = pd.Series(data, index=index) print(s)

输出:

a 10 b 20 c 30 d 40 e 50 dtype: int64

代码详解:

  • index=['a', 'b', 'c', 'd', 'e']:定义了一个索引列表。

  • pd.Series(data, index=index):创建Series时,将索引列表与数据关联起来。

  • 输出结果显示了自定义的索引。

3. 从字典创建Series

import pandas as pd data = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50} s = pd.Series(data) print(s)

输出:

a 10 b 20 c 30 d 40 e 50 dtype: int64

代码详解:

  • data = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50}:定义了一个字典,键作为索引,值作为数据。

  • pd.Series(data):从字典创建Series,键自动成为索引。

4. Series 的访问

import pandas as pd data = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50} s = pd.Series(data) # 通过索引访问 print(s['a']) # 通过位置访问 print(s[0]) # 切片访问 print(s['b':'d']) #包含d

输出:

10 10 b 20 c 30 d 40 dtype: int64

代码详解:

  • s['a']:通过索引'a'访问Series中的值。

  • s[0]:通过位置(0)访问Series中的值。

  • s['b':'d']:使用索引进行切片访问,注意,使用索引切片时,结束位置是包含在结果中的。

5. Series 的常用属性

import pandas as pd data = [10, 20, 30, 40, 50] index = ['a', 'b', 'c', 'd', 'e'] s = pd.Series(data, index=index) print(s.index) # 索引 print(s.values) # 值 print(s.dtype) # 数据类型 print(s.shape) # 形状 print(s.size) # 大小

输出:

Index(['a', 'b', 'c', 'd', 'e'], dtype='object') [10 20 30 40 50] int64 (5,) 5

代码详解:

  • s.index:返回Series的索引。

  • s.values:返回Series的值,以NumPy数组的形式。

  • s.dtype:返回Series的数据类型。

  • s.shape:返回Series的形状(一个元组,表示维度)。

  • s.size:返回Series的大小(元素的个数)。

1.1.6 DataFrame 的创建与使用

1. 从字典创建DataFrame

import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 30, 28, 22], 'city': ['New York', 'London', 'Paris', 'Tokyo'] } df = pd.DataFrame(data) print(df)

输出:

name age city 0 Alice 25 New York 1 Bob 30 London 2 Charlie 28 Paris 3 David 22 Tokyo

代码详解:

  • data:一个字典,键是列名,值是列的数据(列表)。

  • pd.DataFrame(data):从字典创建DataFrame,字典的键成为列名。

2. 从列表创建DataFrame

import pandas as pd data = [ ['Alice', 25, 'New York'], ['Bob', 30, 'London'], ['Charlie', 28, 'Paris'], ['David', 22, 'Tokyo'] ] df = pd.DataFrame(data, columns=['name', 'age', 'city']) print(df)

输出:

name age city 0 Alice 25 New York 1 Bob 30 London 2 Charlie 28 Paris 3 David 22 Tokyo

代码详解:

  • data:一个列表,其中每个元素是一个列表,表示一行数据。

  • columns=['name', 'age', 'city']:指定列名。

3. 从NumPy数组创建DataFrame

import pandas as pd import numpy as np data = np.array([ ['Alice', 25, 'New York'], ['Bob', 30, 'London'], ['Charlie', 28, 'Paris'], ['David', 22, 'Tokyo'] ]) df = pd.DataFrame(data, columns=['name', 'age', 'city']) print(df)

输出:

name age city 0 Alice 25 New York 1 Bob 30 London 2 Charlie 28 Paris 3 David 22 Tokyo

代码详解:

  • np.array(...):创建一个NumPy数组。

  • columns=['name', 'age', 'city']:指定列名。

4. DataFrame 的访问

import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 30, 28, 22], 'city': ['New York', 'London', 'Paris', 'Tokyo'] } df = pd.DataFrame(data) # 访问列 print(df['name']) print(df.name) # 推荐使用df['name'],避免与DataFrame的方法冲突 # 访问行 print(df.loc[0]) # 通过索引访问 print(df.iloc[0])# 通过位置访问 # 访问特定元素 print(df.loc[0, 'name']) print(df.iloc[0, 0]) # 切片访问 print(df[1:3]) #不包含3 print(df.loc[1:3, 'name':'city']) #包含3和city

输出:

0 Alice 1 Bob 2 Charlie 3 David Name: name, dtype: object 0 Alice 1 Bob 2 Charlie 3 David Name: name, dtype: object name Alice age 25 city New York Name: 0, dtype: object name Alice age 25 city New York Name: 0, dtype: object Alice Alice name age city 1 Bob 30 London 2 Charlie 28 Paris name age city 1 Bob 30 London 2 Charlie 28 Paris 3 David 22 Tokyo

代码详解:

  • df['name']:访问名为'name'的列。

  • df.loc[0]:访问索引为0的行。

  • df.iloc[0]:访问位置为0的行。

  • df.loc[0, 'name']:访问索引为0的行,列名为'name'的元素。

  • df.iloc[0, 0]:访问位置为0的行和列的元素。

  • df[1:3]:使用位置进行切片访问行,不包含结束位置。

  • df.loc[1:3, 'name':'city']:使用索引进行切片访问行和列,包含结束位置。

5. DataFrame 的常用属性

import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 30, 28, 22], 'city': ['New York', 'London', 'Paris', 'Tokyo'] } df = pd.DataFrame(data) print(df.index) # 索引 print(df.columns)# 列名 print(df.values) # 值 print(df.dtypes) # 数据类型 print(df.shape) # 形状 print(df.size) # 大小

输出:

RangeIndex(start=0, stop=4, step=1) Index(['name', 'age', 'city'], dtype='object') [['Alice' 25 'New York'] ['Bob' 30 'London'] ['Charlie' 28 'Paris'] ['David' 22 'Tokyo']] name object age int64 city object dtype: object (4, 3) 12

代码详解:

  • df.index:返回DataFrame的索引。

  • df.columns:返回DataFrame的列名。

  • df.values:返回DataFrame的值,以NumPy数组的形式。

  • df.dtypes:返回DataFrame每列的数据类型。

  • df.shape:返回DataFrame的形状(行数,列数)。

  • df.size:返回DataFrame的大小(元素的个数,行数 * 列数)。

1.1.7 Pandas 的基本操作

1. 数据筛选

import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'age': [25, 30, 28, 22, 32], 'city': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney'] } df = pd.DataFrame(data) # 筛选年龄大于25的人 filtered_df = df[df['age'] > 25] print(filtered_df) # 筛选城市为New York或Paris的人 filtered_df = df[df['city'].isin(['New York', 'Paris'])] print(filtered_df)

输出:

name age city 1 Bob 30 London 2 Charlie 28 Paris 4 Eve 32 Sydney name age city 0 Alice 25 New York 2 Charlie 28 Paris

2. 数据排序

import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'age': [25, 30, 28, 22, 32], 'city': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney'] } df = pd.DataFrame(data) # 按年龄升序排序 sorted_df = df.sort_values(by='age') print(sorted_df) # 按年龄降序排序 sorted_df = df.sort_values(by='age', ascending=False) print(sorted_df)

输出:

name age city 3 David 22 Tokyo 0 Alice 25 New York 2 Charlie 28 Paris 1 Bob 30 London 4 Eve 32 Sydney name age city 4 Eve 32 Sydney 1 Bob 30 London 2 Charlie 28 Paris 0 Alice 25 New York 3 David 22 Tokyo

3. 数据统计

import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'age': [25, 30, 28, 22, 32], 'city': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney'] } df = pd.DataFrame(data) # 描述性统计 print(df.describe()) # 求平均值 print(df['age'].mean()) # 求最大值 print(df['age'].max()) # 求最小值 print(df['age'].min()) # 求和 print(df['age'].sum())

输出:

age count 5.000000 mean 27.400000 std 3.911521 min 22.000000 25% 25.000000 50% 28.000000 75% 30.000000 max 32.000000 27.4 32 22 137

1.1.8 总结

Pandas是Python数据分析的核心库,它提供了强大的数据结构和数据分析工具。掌握Series和DataFrame是使用Pandas的基础。通过本节的介绍,你应该对Pandas有了初步的了解,并能够创建和操作Series和DataFrame。在后续的学习中,我们将深入探讨Pandas的更多功能。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U