Python数据分析 DataFrame 笔记

python,dataframe · 浏览次数 : 0

小编点评

**数据合并** * **纵向级联**:按行索引进行合并,如果索引相同,则按列索引进行合并。 * **横向级联**:按列索引进行合并,如果索引相同,则按行索引进行合并。 * **外连接**:根据外键进行连接,并根据外键值进行合并。 **缺失值处理** * **nannp.nan**:将缺失值替换为特定值。 * **None**:将缺失值处理为 np.nan。 * **dropna()**:根据行或列索引过滤缺失值。 * **_filter**:根据布尔值过滤缺失值。 **重复值处理** * **duplicated()**:返回重复行的一个布尔 Series。 * **drop_duplicates()**:删除重复行。 **数据映射** * **map**:将函数应用于每个元素并将其映射到新数据中。 * **transform**:在每个元素之间执行一系列操作并将结果整合到新的数据中。 **索引名处理** * **rename**:根据索引名重新命名索引。 * **reset_index**:重置索引为默认值。 * **set_index**:设置自定义索引。 **异常值处理** * **describe()**:查看数据描述性统计量。 * **df.std()**:求得DataFrame对象每一列的标准差。 * **df.drop()**:删除特定索引。 **数据清理** * **_fillna()**:填充缺失值。 * **replace()**:对values进行替换操作。 * **mapmap**:使用 lamba 函数对数据进行处理。

正文

08,DataFrame创建

DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】(共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

  • 行索引:index
  • 列索引:columns
  • 值:values(Numpy的二维数组)

(8.1)DataFrame的创建

最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。此外,DataFrame会自动加上每一行的索引(和Series一样)。

同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。

 

 DataFrame的基本属性和方法:

  • values 值,二维ndarray数组
  • columns  列索引
  • index  行索引
  • shape  形状
  • head()  查看前几条数据,默认5条
  • tail()  查看后几条数据,默认5条

 

 

 

 

 

 

 

其他创建DataFrame的方式

 

09,DataFrame切片

【注意】直接用中括号时:

  • 索引优先对列进行操作
  • 切片优先对行进行操作

 

 

 

总结:

  • 要么取一行或一列:索引
  • 要么取连续的多行或多列:切片
  • 要么取不连续的多行或多列:中括号

 

 

 

 

 

 

 

 

010,DataFrame运算

(10.1)DataFrame之间的运算

  • 在运算中自动补齐不同索引的数据
  • 如果索引不对应,则补NaN
  • DataFrame没有广播机制

创建DataFrame df1 不同人员的各科目成绩,月考一

 

创建DataFrame df2 不同人员的各科目成绩,月考二

 

 DataFrame和标量之间的运算

 DataFrame之间的运算

 

使用.add() 函数,填充数据

 

 

 (10.2)Series与DataFrame之间的运算

  • 使用Python操作符:以行为单位操作(参数必须是行),对所有行都有效。
  1. 类似于NumPy中二维数组与一维数组的运算,但可能出现NaN
  • 使用Pandas操作函数:
  1. axis=0:以列为单位操作(参数必须为列),对所有列都有效。
  2. axis=1:以行为单位操作(参数必须为行),对所有行都有效。

 

 

011,创建层次化索引

(11.1)创建多层行索引

(11.1.1)隐式构造

最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组

  •  Series也可以创建多层索引

 (11.1.2)显示构造pd.MultiIndex

  • 使用数组

 

  • 使用tuple

 

  • 使用product
  • 笛卡尔积

 (11.2)多层列索引

除了行索引index,列索引columns也能用同样的方法创建多层索引

就是把pd.MultIndex. 移到columns那里去

012,多层索引中Series的索引和切片操作

(12.1)Series的操作

  • 对于Series的操作,直接中括号[] 与使用.loc() 完全一样

(12.1.1)索引

 

 

 

 

 

 

(12.1.2)切片

 

 

013,多层索引中DataFrame的索引和切片操作

(13.1)索引

 

 

 

 

 

 

 

 

 

(13.2)切片

 

 

 

 

 

014,索引的堆叠

 (14.1)stack():将列索引变成行索引

 (14.2)unstack():将行索引变成列索引

 (14.3)使用fill_value填充

 

 

 015,聚合操作

(15.1)DataFrame聚合函数

  • 求和
  • 平均值
  • 最大值
  • 最小值等

 

 

 

 (15.2)多层索引聚合操作

 

 016,数据合并concat

为方便讲解,我们首先定义一个生成DataFrame的函数:

示例:

使用pd.concat()级联

pandas使用pd.concat函数,与np.concatenate函数类似

 (16.1)简单级联

 

  •  忽略行索引 ignore_index

  •  使用多层索引 keys

 (16.2)不匹配级联

不匹配指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致

 

  •  外连接:补NaN(默认模式)

  •  内连接:只连接匹配的项

 

017,数据合并merge合并1

 

  • 类似于MySQL中表和表直接的合并
  • merge与concat的区别在于,merge需要依据某一共同的行或列来进行合并
  • 使用pd.merge() 合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。
  • 每一列元素的顺序不要求一致

(17.1)一对一合并

 

 

(17.2)多对一合并

 

 

(17.3)多对多合并

 

 (17.4)key的规范化

  • 使用on = 显式指定哪一列为key,当2个DataFrame有多列相同时使用

 

 

  •  使用left_on和right_on指定左右两边的列作为key,当左右两边的key都不相等时使用

 

  •  当左边的列和右边的index相同的时候,使用right_index=True

 

 018,数据合并merge合并2

(18.1)内合并与外合并

  • 内合并:只保留两者都有的key(默认模式)

 

  •  外合并 how='outer':补NaN

  •  左合并,右合并:how='left',how='right'

 

 (18.2)列冲突的解决

当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名

可以使用suffixes=自己指定后缀

 

 merge合并总结:

  • 合并有三种现象:一对一,多对一,多对多。
  • 合并默认会找相同的列名进行合并,如果有多个列名相同,用on来指定。
  • 如果没有列名相同,但是数据又相同,可以通过left_on,right_on来分别指定要合并的列。
  • 如果想和index合并,使用left_index,right_index来指定。
  • 如果多个列相同,合并之后可以通过suffixes来区分。
  • 还可以通过how来控制合并的结果,默认是内合并,还有外合并outer,左合并left,右合并right。

 

019,缺失值处理nan

np.nan是浮点类型,能参与到计算中。但计算的结果总是NaN。

 020,缺失值检测

(20.1)Pandas中None与np.nan都视作np.nan

  • 创建DataFrame

  •  使用DataFrame行索引与列索引修改DataFrame数据

 

 

(20.2)pandas中None与np.nan的操作

 (20.2.1)判断函数

  • isnull()
  • notnull()

 

 

 

 

 

021,缺失值处理_过滤数据

(21.1)使用bool值过滤数据

 

 

 

 

 (21.2)过滤函数dropna

(21.2.1)可以选择过滤的是行还是列(默认为行)

 ps:这里数据变了

 

 

(21.2.2)也可以选择过滤的方式 how = 'all'

 

(21.2.3)inplace=True 修改原数据

 022,缺失值处理_填充空值

(22.1)填充函数 fillna() Series/DataFrame

 (22.2)可以选择前向填充还是后向填充

 

 重新创建数据

 

 也可以不用重新创建数据,因为没有用到 inplace=True

 

023,重复值处理

(23.1)使用duplicated() 函数检测重复的行

  • 返回元素为布尔类型的Series对象
  • 每个元素对应一行,如果该行不是第一次出现,则元素为True

 

 

 

 

 (23.2)使用drop_duplicates() 函数删除重复的行

 

 

024,替换元素replace

使用replace() 函数,对values进行替换操作

 

025,数据映射map

map()函数中可以使用lamba函数

 

 

 

 

 

 026,修改索引名rename

 

 

 

 027,重置索引reset_index和设置索引set_index

 028,数据处理apply

apply() 函数:既支持 Series,也支持DataFrame

 

 

 

029,数据处理transform

 

 

 

 030,异常值检测和过滤1

(30.1)describe() :查看每一列的描述性统计量

 

 

 

 (30.2)df.std() :可以求得DataFrame对象每一列的标准差

 (30.3)df.drop() :删除特定索引

 

031, 异常值检测和过滤2

(31.1)unique() :唯一,去重

 (31.2)df.query:按条件查询

 

 

 032,异常值检测和过滤3

 (32.1)df.sort_values():根据值排序;df.sort_index():根据索引排序

 

 重新创建数据

 

 

035,常用聚合函数(count,max,min,median,sum,mean)

 

 

 

 

 

 

 038,数据分组聚合

数据聚合是数据处理的最后一步,通常是要使每一个数组生成一个单个的数值。

数据分类处理:

  • 分组:先把数据分为几组
  • 用函数处理:为不同组的数据应用不同的函数以转换数据
  • 合并:把不同组得到的结果合并起来

数据分类处理的核心:groupby()函数

 

使用.groups属性查看各行的分组情况:

 

 

 039,CSV数据加载

(39.1)df.to_csv:保存到csv

 

(39.2)df.read_csv:加载csv数据

 

与Python数据分析 DataFrame 笔记相似的内容:

Python数据分析 DataFrame 笔记

08,DataFrame创建 DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】(共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。 行索引:index

【pandas基础】--概述

Pandas是一个开源的Python数据分析库。 它提供了快速,灵活和富有表现力的数据结构,旨在使数据清洗和分析变得简单而快速。 Pandas是基于NumPy数组构建的,因此它在许多NumPy函数上提供了直接的支持。它还提供了用于对表格数据进行操作的数据结构,例如Series和DataFrame。

#Python基础 pandas索引设置

一:XMIND 二:设置索引 示例数据,假设我们有一个DataFrame对象,如下: import pandas as pd df = pd.DataFrame({ "name": ["Alice", "Bob", "Charlie", "David"], "age": [25, 30, 35, 4

【pandas基础】--核心数据结构

pandas中用来承载数据的两个最重要的结构分别是: Series:相当于增强版的一维数组 DataFrame:相当于增强版的二维数组 pandas最大的优势在于处理表格类数据,如果数据维度超过二维,一般我们会使用另一个 python的库 numpy。 本篇主要介绍这两种核心数据结构的创建方式。 1

#Python基础 DateFrame 查看数据信息

一:导入案例数据及X-MIND 二:实例 2.1 显示摘要信息 2.2显示描述性统计信息 2.3显示 前后n行 2.4显示索引、列信息 2.5显示每列的数据类型

Pandas 加载数据的方法和技巧

哈喽大家好,我是咸鱼 相信小伙伴们在学习 python 数据分析的过程中或多或少都会听说或者使用过 pandas pandas 是 python 的一个拓展库,常用于数据分析 今天咸鱼将介绍几个关于 pandas 导入数据的方法和技巧 ## 从 URL 获取 csv 数据 关于 pandas 导入

详解Python 中可视化数据分析工作流程

本文分享自华为云社区《Python 可视化数据分析从数据获取到洞见发现的全面指南》,作者:柠檬味拥抱。 在数据科学和分析的领域中,可视化是一种强大的工具,能够帮助我们理解数据、发现模式,并得出洞见。Python 提供了丰富的库和工具,使得可视化数据分析工作流程变得高效而灵活。本文将介绍 Python

数据分析---numpy模块

前戏 NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。 快捷键的使用: 添加cell:a或者b 删除:x 修改cell的模式: m:修改成markdown模式

#Python 利用pivot_table,数据透视表进行数据分析

前面我们分享了,利用python进行数据合并和连接,但是工作中,我们往往需要对数据进一步的聚合或者运算,以求最后的数据结果。 今天我们就来学习一下利用pandas模块,对数据集进行数据透视分析。 pivot_table释义 1.1 pivot_table参数列表: pandas.pivot_tabl

(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,就在几天前,经过六年多的持续开发迭代,著名的开源高性能分析型数据库DuckDB发布了其1.0.0正式版本。 DuckDB具有