240
我爱毛绒绒~~~~~~~

数据分析 - Pandas模块

pandas是以NumPy为基础进行设计的,因此pandas不仅能与其他大多数模块兼容,而且还能借力NumPy模块强大的计算能力,因此,在数据分析中pandas和NumPy这两个模块经常是一起使用的。
为了数据分析的需要,pandas既不使用Python已有的内置数据结构,也不使用其他库的数据结构,而是专门设计了两种新型的数据结构。
使用这两种数据结构管理与SQL关系数据库和Excel工作表具有类似特征的数据会非常方便。由于pandas最初是作为金融数据分析工具而开发出来的,因此,pandas为时间序列分析提供了很好的支持。根据开发pandas时提出的需求,pandas的基本功能如下:

  • 具备按轴自动或显式数据对齐功能的数据结构。这可以防止许多由于数据未对齐以及来自不同数据源(索引方式不同)的数据而导致的常见错误。
  • 集成时间序列功能。
  • 既能处理时间序列数据也能处理非时间序列数据的数据结构。
  • 数学运算和约简(比如对某个轴求和)可以根据不同的元数据(轴编号)执行。
  • 灵活处理缺失数据。
  • 合并及其他出现在常见数据库(例如基于SQL)中的关系型运算。

数据结构

pandas的数据结构中有两大核心,分别是Series与DataFrame。其中Series是一维数组,它和Numpy中的一维数组类似。这两种一维数组与Python中的基本数据结构List相近,Series可以保存多种数据类型的数据,如布尔值、字符串、数字类型等。DataFrame是一种二维的表格形式的数据结构,它类似于Excel表格。

  • Series 是一种类似于一维数组的对象,它由一组数据(各种 Numpy 数据类型)以及一组与之相关的数据标签(即索引)组成。
  • DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。

安装

pip install pandas

Series

Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。

  • 索引:每个 Series 都有一个索引,它可以是整数、字符串、日期等类型。如果没有显式指定索引,Pandas 会自动创建一个默认的整数索引
  • 数据类型: Series 可以容纳不同数据类型的元素,包括整数、浮点数、字符串等

pandas.Series( data, index, dtype, name, copy):可以使用 pd.Series() 构造函数创建一个 Series 对象,传递一个数据数组(可以是列表、NumPy 数组等)和一个可选的索引数组

  • data:一组数据(ndarray 类型或者列表,字典等等)。

  • index:数据索引标签,如果不指定,默认从 0 开始。

  • dtype:数据类型,默认会自己判断。

  • name:设置名称。

  • copy:拷贝数据,默认为 False。

    • 使用数组创建

    • 使用字典创建:字典中的一个键与值的映射关系,可以被看成是Series对象中的索引值到数据值的一个映射,因此,可以将字典直接转换为Series对,也可以将Series对象转换成字典(pd.Series.to_dict

    • 使用列表创建

    数组创建的series是动态的:即数组改变,series也会随之改变

    import pandas as pd
    import numpy as np
    '''数组'''
    print('数组:')
    mynumpy = np.array([1,2,3,4])
    series_arr = pd.Series(mynumpy)
    print(series_arr)
    mynumpy[1]=22
    print('\n',series_arr)
    '''字典'''
    print('\n','字典:')
    mydict = {'jack':18,'rose':19,'joe':17}
    series_dict = pd.Series(mydict)
    print(series_dict)
    mydict.update({'jace':180})
    print('\n',series_dict)
    '''列表'''
    print('\n','列表:')
    mylist = ['a','b','c']
    series_list = pd.Series(mylist)
    print(series_list)
    mylist[0]='aa'
    print('\n',series_list)
    

Series索引

  • 设置索引

  • 索引访问

  • 切片访问

Series元素操作

  • 元素赋值

  • 元素筛选

  • 算数运算和数学函数(可以直接调用numpy库来处理)

  • 去重

  • 统计个数

  • 统计每个元素的个数

  • 判断一列元素是否存在,返回的是布尔类型series

Series对象操作

在Series对象之间进行运算时,Series能够通过识别标签对齐不一致的数据。这就是Series运算时的自动对齐功能。

通过上述计算得到了一个新Series对象,其中只对标签相同的元素求和,其他只属于各自的Series对象的标签也被添加到新对象中,只不过它们的值为NaN

DataFrame

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)

  • 列和行: DataFrame 由多个列组成,每一列都有一个名称,可以看作是一个 Series。同时,DataFrame 有一个行索引,用于标识每一行
  • 二维结构: DataFrame 是一个二维表格,具有行和列。可以将其视为多个 Series 对象组成的字典。
  • 列的数据类型: 不同的列可以包含不同的数据类型,例如整数、浮点数、字符串等。

pandas.DataFrame( data, index, columns, dtype, copy)

  • data:一组数据(ndarray、series, map, lists, dict 等类型)。

  • index:索引值,或者可以称为行标签

  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

  • dtype:数据类型。

  • copy:拷贝数据,默认为 False。

    • 使用列表创建

    • 使用字典创建

    没有数据部分用NaN代替

    • 使用数组创建

DataFrame属性

  • 行属性,列属性

  • 获取所有数据

  • 获取某一列数据,两种写法够可以

  • 通过iloc属性获取某一行数据,指定index也不可以,只能通过该属性,可以切片

DataFrame操作

  • 指定行索引和列索引标签

  • 添加元素

    • 添加一列元素

    • 添加一行元素

  • 修改元素

  • 删除元素

  • 筛选元素

  • 判断元素是否存在

  • 转置,和nupmy类似

NaN

一般来讲,NaN表示数据有问题,必须对其进行处理,尤其是在数据分析时。从某些数据源抽取数据时遇到了问题,甚至是数据源缺失数据时,往往会产生这类数据。另外,在执行计算和函数运算时也会遇到这类数据。
可以用dropna()这个方法筛选出正常的值;
isna()用来判断所在行是否有NaN,(Series产生一个布尔值的Series;DataFrame产生一个布尔值的DataFrame)

Pandas索引对象

pandas的两种数据结构Series和DataFrame都是具备索引的。在创建pandas的两种数据结构时,可以通过选项参数index指定标签或行索引。pandas的索引对象负责管理轴标签和其他元数据(如轴名称等)。在创建Series或DataFrame的时候,所用到的任何数组或其他序列的标签都会被转换成一个Index对象。
与pandas数据结构(Series和DataFrame)中其他元素不同的是,Index对象是不可修改的(Immutable),一旦声明,它就不能改变。当不同数据结构共用Index对象时,该特性能够保证它的安全。

Index对象的属性和方法

  • 获取Index对象

其他的方法如:插入,删除,计算并集等等和list方法类似

  • 重置索引

层级索引

  • 创建层级索引
    • Series:长度必须一致,否知报错

    • Dataframe:显式不写了

Series和DataFrame的区别和联系

区别

  • series,只是一个一维数据结构,它由index和value组成。
  • dataframe,是一个二维结构,除了拥有index和value之外,还拥有column。

联系

dataframe由多个series组成,无论是行还是列,单独拆分出来都是一个series。

数据读取和保存

读取

  • 省略读取

  • to_string() 用于返回 DataFrame 类型的数据

  • 读取前几行

  • 读取末尾几行

  • 读取表格信息

保存导出

  • 保存为csv文件

  • 保存为excel文件

posted @ 2024-05-07 15:30  水开白  阅读(8)  评论(0编辑  收藏  举报