Pandas 是基于 NumPy 的一种数据处理工具,该工具为了解决数据分析任务而创建

Pandas 的数据结构:Pandas 主要有 Series(一维数组),DataFrame(二维数组),Panel(三维数组),Panel4D(四维数组),PanelND(更多维数组)等数据结构。

Series 是一维带标签的数组,它可以包含任何数据类型。包括整数,字符串,浮点数,Python 对象等。Series 可以通过标签来定位。

DataFrame 是二维的带标签的数据结构。我们可以通过标签来定位数据。这是 NumPy 所没有的。

  1. 导入 Pandas 模块
    ​​​import pandas as pd​
  2. 查看Pandas版本信息
    ​​​print(pd.__version__)​

一、Series 基本操作


创建 Series 数据类型

Pandas 中,Series 可以被看作由 1 列数据组成的数据集。

创建 Series 语法:​​s = pd.Series(data, index=index)​​,可以通过多种方式进行创建

  1. 从列表创建 Series
arr = [0, 1, 2, 3, 4]
s1 = pd.Series(arr) # 如果不指定索引,则默认从 0 开始
s1

提示:前面的 0,1,2,3,4 为当前 Series 的索引,后面的 0,1,2,3,4 为 Series 的值。

  1. 从 Ndarray 创建 Series
import numpy as np
n = np.random.randn(5) # 创建一个随机 Ndarray 数组

index = ['a', 'b', 'c', 'd', 'e']
s2 = pd.Series(n, index=index)
s2
  1. 从字典创建 Series
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
s3 = pd.Series(d)
s3
  1. 修改 Series 索引
print(s1)  # 以 s1 为例

s1.index = ['A', 'B', 'C', 'D', 'E'] # 修改后的索引
s1
  1. Series 纵向拼接
s4 = s3.append(s1)  # 将 s1 拼接到 s3
s4
  1. Series 按指定索引删除元素
print(s4)
s4 = s4.drop('e') # 删除索引为 e 的值
s4
  1. Series 修改指定索引元素
s4['A'] = 6  # 修改索引为 A 的值 = 6
s4
  1. Series 按指定索引查找元素
s4['B']
  1. Series 切片操作
    访问​​​s4​​前3个数据
s4[:3]




二、Series 基本运算


  1. Series 加法运算
    Series 的加法运算是按照索引计算,如果索引不同则填充为 NaN(空值)。
s4.add(s3)
  1. Series 减法运算
    Series的减法运算是按照索引对应计算,如果不同则填充为 NaN(空值)。
s4.sub(s3)
  1. Series 乘法运算
s4.mul(s3)
  1. Series 除法运算
s4.div(s3)
  1. Series 求中位数
s4.median()
  1. Series 求和
    ​s4.sum()​
  2. Series 求最大值
    ​s4.max()​
  3. Series 求最小值
    ​s4.min()​



三、创建 DataFrame 数据类型


与 Sereis 不同,DataFrame 可以存在多列数据。

  1. 通过 NumPy 数组创建 DataFrame
dates = pd.date_range('today', periods=6)  # 定义时间序列作为 index
num_arr = np.random.randn(6, 4) # 传入 numpy 随机数组
columns = ['A', 'B', 'C', 'D'] # 将列表作为列名
df1 = pd.DataFrame(num_arr, index=dates, columns=columns)
df1

【Python】之 Pandas_Python

  1. 通过字典数组创建 DataFrame
data = {'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],
'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}

labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df2 = pd.DataFrame(data, index=labels)
df2

【Python】之 Pandas_数据_02

  1. 查看 DataFrame 的数据类型
df2.dtypes

【Python】之 Pandas_数据类型_03




四、DataFrame 基本操作


  1. 预览​​DataFram​​ 前 5 行数据
    ​df2.head() # 默认为显示 5 行,可根据需要在括号中填入希望预览的行数​
  2. 查看 DataFrame 的后 3 行数据
    ​df2.tail(3)​
  3. 查看 DataFrame 的索引
    ​df2.index​
  4. 查看 DataFrame 的列名
    ​df2.columns​
  5. 查看 DataFrame 的数值
    ​df2.values​
  6. 查看 DataFrame 的统计数据
    ​df2.describe()​
  7. DataFrame 转置操作
    ​df2.T​
  8. 对 DataFrame 进行按列排序
    ​df2.sort_values(by='age') # 按 age 升序排列​
  9. 对 DataFrame 数据切片
    ​df2[1:3]​
  10. 对 DataFrame 通过标签查询(单列)
    ​df2['age']​​​​df2.age # 等价于 df2['age']​
  11. 对 DataFrame 通过标签查询(多列)
    ​df2[['age', 'animal']] # 传入一个列名组成的列表​
  12. 对 DataFrame 通过位置查询
    ​df2.iloc[1:3] # 查询 2,3 行​
  13. DataFrame 副本拷贝
    ​df3 = df2.copy()​
  14. 判断 DataFrame 元素是否为空
    ​df3.isnull() # 如果为空则返回为 True​
  15. 添加列数据
num = pd.Series([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], index=df3.index)

df3['No.'] = num # 添加以 'No.' 为列名的新数据列
df3
  1. 根据 DataFrame 的下标值进行更改
# 修改第 2 行与第 1 列对应的值 3.0 → 2.0
df3.iat[1, 0] = 2 # 索引序号从 0 开始,这里为 1, 0
df3
  1. 根据 DataFrame 的标签对数据进行修改
df3.loc['f', 'age'] = 1.5
df3
  1. DataFrame 求平均值操作
df3.mean()
  1. 对 DataFrame 中任意列做求和操作
    ​df3['visits'].sum()​
  2. 将字符串转化为小写字母
string = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca',
np.nan, 'CABA', 'dog', 'cat'])
print(string)
string.str.lower()
  1. 将字符串转化为大写字母

​string.str.upper()​




五、DataFrame 缺失值操作


  1. 对缺失值进行填充
df4 = df3.copy()
print(df4)
df4.fillna(value=3) # 缺失的值,填3
  1. 删除存在缺失值的行
df5 = df3.copy()
print(df5)
df5.dropna(how='any') # 任何存在 NaN 的行都将被删除
  1. DataFrame 按指定列对齐
left = pd.DataFrame({'key': ['foo1', 'foo2'], 'one': [1, 2]})
right = pd.DataFrame({'key': ['foo2', 'foo3'], 'two': [4, 5]})

print(left)
print(right)

# 按照 key 列对齐连接,只存在 foo2 相同,所以最后变成一行
pd.merge(left, right, on='key')




六、DataFrame 文件操作


  1. CSV 文件写入
df3.to_csv('animal.csv')
print("写入成功.")
  1. CSV 文件读取
df_animal = pd.read_csv('animal.csv')
df_animal
  1. Excel 写入操作
df3.to_excel('animal.xlsx', sheet_name='Sheet1')
print("写入成功.")
  1. Excel 读取操作
pd.read_excel('animal.xlsx', 'Sheet1', index_col=None, na_values=['NA'])