【Pandas】(1)安装与Series

17 阅读4分钟

Pandas是一个开源的Python数据分析库,提供了高性能、易于使用的数据结构和数据分析工具。它是基于NumPy库构建的,使得数据预处理、清洗、分析变得更加快速和简单。Pandas主要有两种类型的数据结构:Series(一维数组)和DataFrame(二维表格)。

注意:和Numpy相比,Pands的计算速度会慢一些,它更侧重于数据处理。

安装

如果你还没有安装Pandas,可以通过pip安装:

pip install pandas

导入

导入Pandas库,通常我们给它一个别名pd

import pandas as pd

Series

Pandas 的 Series 是一个一维的标签化数组,能够存储任何数据类型(整数、字符串、浮点数、Python 对象等)。Series 是 Pandas 中最基本的对象之一,提供了丰富的功能来进行高效的数据操作和分析。

创建 Series

你可以使用 pd.Series() 函数来创建一个 Series 对象,其基本语法如下:

pd.Series(data=None, index=None, dtype=None, name=None)
  • data:数据,可以是列表、字典、ndarray 等。
  • index:索引值,是数据标签。如果不指定,默认为 RangeIndex(0, 1, 2, ...)
  • dtype:数据类型,如果不指定,将自动推断。
  • nameSeries 的名称。
import pandas as pd
import numpy as np

# 通过列表创建 Series
s1 = pd.Series([1, 3, 5, np.nan, 6, 8])

# 通过字典创建 Series,自动使用字典键作为索引
s2 = pd.Series({'a': 1, 'b': 2, 'c': 3})

# 指定索引和数据类型
s3 = pd.Series([10, 20, 30], index=['a', 'b', 'c'], dtype='float64')

Series 属性

  • indexSeries 的索引标签。
  • valuesSeries 的数据,以 ndarray 形式返回。
  • dtypeSeries 中数据的类型。
  • nameSeries 的名称,有助于标识 Series 对象。
print(d.index)  # Index(['a', 'b', 'c'], dtype='object')
print(d.values)  # [1 2 3]
print(d.dtype)  # int64

数据访问

可以通过多种方式访问 Series 中的数据:

  • 使用索引标签
  • 使用位置索引
  • 使用切片
  • 使用布尔索引
# 使用索引标签
print(s2['a'])

# 使用位置索引
print(s1[0])

# 使用切片
print(s1[1:4])

# 使用布尔索引
print(s1[s1 > 3])

Series 方法

数据选择

可以使用索引标签或位置进行数据选择和赋值。

# 使用索引标签选择数据
print(d['a'])  # 1

# 使用索引位置选择数据
print(d[0])  # 1

# 修改数据
d['a'] = 10

切片和筛选

Series 支持类似 NumPy 的切片和条件筛选。

# 切片
print(d[1:3])

# 条件筛选
print(d[d > 1])

数学运算

Series 支持许多数学运算方法。

# 加法运算
print(d + d)

# 标量乘法
print(d * 2)

# 指数运算
print(d ** 2)

缺失值处理

pandas 提供了一些方法来处理缺失值。

# 判断是否为 NaN
print(d.isna())

# 填充缺失值
print(d.fillna(value=5))

# 删除缺失值
print(d.dropna())

统计方法

Series 提供了许多统计方法,可以快速了解数据的概况。

# 平均值
print(d.mean())

# 标准差
print(d.std())

字符串操作

如果 Series 的数据类型是字符串,pandas 提供了一系列字符串操作方法,这些方法通过 str 属性进行调用。

s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])

# 转换为小写
print(s.str.lower())

修改 Series

Series对象不仅可以进行数据选择和检索,还可以被修改。这包括修改Series的数据、索引和其他属性。

修改Series的数据

直接通过索引修改

可以通过索引直接修改Series中的单个值或多个值。

import pandas as pd
import numpy as np

s = pd.Series([1, 3, 5, np.nan, 6, 8])

# 修改单个值
s[0] = 10

# 修改多个值
s[[1, 2]] = 20
条件修改

还可以根据条件来修改Series中的值。

s[s > 5] = -1

修改Series的索引

可以通过修改index属性来更改Series的索引。

s.index = ['a', 'b', 'c', 'd', 'e', 'f']

使用.replace()方法

replace()方法提供了一种方便的方式来修改Series中的值,可以替换单个值或多个值。

# 替换单个值
s.replace(10, -10, inplace=True)

# 替换多个值
s.replace([20, -1], [200, -100], inplace=True)

使用.apply().map()方法

.apply()方法允许你对Series中的每个元素应用一个函数。.map()方法也类似,但主要用于元素的替换。

# 使用.apply()方法
s.apply(lambda x: x*2)

# 使用.map()方法进行替换
s = pd.Series(['cat', 'dog', 'rabbit', 'bird'])
pet_to_owner = {'cat': 'Alice', 'dog': 'Bob', 'rabbit': 'Charlie'}
s.map(pet_to_owner)

修改Series对象的名称

Series对象本身也可以有一个name属性,这在转换为DataFrame或在某些绘图功能中特别有用。

s.name = 'Pets'