Pandas基础——DataFrame

pandas简介

Pandas是字典形式,基于NumPy创建,让以NumPy为中心的应用变得更加简单。
Pandas有两种数据结构,Series和DataFrame。Numpy的是ndarray。

本文将讲解DataFrame的知识点。

一、DataFrame简介

DataFrame类型由 共用相同索引的一组Series组成

DataFrame既有 行索引(index)、也有列索引(columns)

二、创建DataFrame

DataFrame主要是依靠pd.DataFrame()创建。

2.1、使用pd.DataFrame()

使用pd.DataFrame()参数可以是

  1. 二维数组
  2. 二维ndarray
  3. 由一维ndarray、列表、Series构成的字典
  4. 也可以从现成的DataFrame中截取
    Pandas基础——DataFrame
    Pandas基础——DataFrame
    Pandas基础——DataFrame
    注意,是columns而不是column。
    Pandas基础——DataFrame

; 三、DataFrame取元素

3.1、取列

  1. df后面直接跟中括号,他就只能取列(想取行,得用loc[ ])
  2. df.loc[ ]
  3. df.iloc[ ]
    方法一:df后面直接跟中括号
    Pandas基础——DataFrame
    方法二:df.loc[ ]
    Pandas基础——DataFrame
    方法三:df.iloc[ ] 因为和第二种差不多,所以不做演示。

; 3.2、取行

  1. df.loc[ ]
  2. df.iloc[ ]

因为两种方法差不多,所以只演示第一种。

Pandas基础——DataFrame

3.3、行列都取

其实就是使用df.loc[ ]和df.iloc[ ]

Pandas基础——DataFrame
注意:在使用布尔实现限制的时候,对行的限制需要取某列;对列的限制需要取某行。可以看看上例的实现。

; 三、增加列

主要就是三种方法

  1. 直接赋值
  2. df.apply()方法
  3. df.assign()方法

点击跳转链接

四、增加行

主要是三种方法

  1. 使用df.loc[ ]直接添加
  2. df.append()方法,增加一行或多行
  3. df.concat()方法,拼接两个df

4.1、直接添加

注意,loc可以对没有的 index 进行赋值,而 iloc 则不允许,iloc只能对已经存在的位置进行操作。

Pandas基础——DataFrame

; 4.2、df.append()方法,增加一行或者多行

>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
>>> df
    A  B
0  1  2
1  3  4
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
>>> df.append(df2)
   A  B
0  1  2
1  3  4
0  5  6
1  7  8

ignore_index参数是把拼接的两部分的index都重置,并且按照隐式索引。上面的例子,以为没有设置ignore_index,所以index比较混乱。

>>> df = pd.DataFrame(columns=['A'])
>>> for i in range(5):
         df = df.append({'A': i}, ignore_index=True)
>>> df
   A
0  0
1  1
2  2
3  3
4  4

df.append()不会修改原数组,需要接受返回值

4.3、df.concat()拼接两个df,和上面差不多。

五、删除行列

删除行或列都可以使用df.drop()

DataFrame.drop(labels=None,axis=0, inplace=False)

  1. labels,单个索引或者索引组成的列表
  2. axis,删除方向,0代表删除行,1代表删除列
  3. inplace,是否对原始数组进行修改,如果不,就返回修改后的值

5.1、删除列

Pandas基础——DataFrame

; 5.2、删除行

Pandas基础——DataFrame

六、索引操作。

6.1、添加新索引

1、使用上面的添加列的方式

2、直接添加

df [ new_col ]= data
data可以先使用np.nan(缺失值)填充这一列,也可以使用一个列表填充这一列,但是列表的长度是有限制的。

Pandas基础——DataFrame

3、先添加索引,再添加值
df.index.insert()
df.columns.insert()
这两种方法返回的都只是新的索引,而不是DataFrame,还要进一步结合reindex()

Pandas基础——DataFrame

; 6.2、修改索引名

1、修改索引名
这个功能很重要,因为修改不能通过先删除在增加来实现,那样的话,数据会在删除的时候直接没了。
df.rename(index=字典, columns=字典)

Pandas基础——DataFrame

Pandas基础——DataFrame

2、重新排列DataFrame的index和columns
df.reindex()方法
也适用于Series

Pandas基础——DataFrame
另外,如果在重新排列索引时,使用了不存在于原数组索引的索引值,则其对应数据默认是NaN,我们可以使用fill_value参数来对其进行填充。
Pandas基础——DataFrame

6.3、删除某个index或者columns

其实还是使用df.drop()方法

Pandas基础——DataFrame
小结:
df.reindex()
df.index.insert()、df.columns.insert()
df.index.delete()、df.columns.delete()
df.rename(index=字典, columns=字典)

以上对DataFrame的修改都会返回新的值,可能是新的索引、或者新的df,而不是直接修改原本的数组,所以需要接受返回值。

; 七、运算法则

7.1、算术运算法则

在pandas中,两个对象首先会广播,然后进行运算,但是 这里的广播不同于一般的numpy广播。

7.2、逻辑运算法则

八、排序

8.1、按照索引值排序

df.sort_index(axis=0, ascending=True)
按照索引的值排序,而不是数据。
默认按照0轴排序、默认升序。

Pandas基础——DataFrame
ascending=False意味着逆序排序。

; 8.2、按照某一列的值进行排序

df.sort_values(by= 列名, ascending=True)
by用来指明哪一列,如果是多列,用列表表示。

Pandas基础——DataFrame
对于pandas,没有按照某一行的值来排序的方法。

元素数据类型的修改

c_itcont['收到捐款的日期'] = c_itcont['收到捐款的日期'] .astype(str)

九、统计分析函数

Pandas基础——DataFrame
1、count()计算的是非NaN的数量。
2、value_counts()统计各种值的频次,这个可以使用group_by()实现,但是前者返回Series后者是DataFrame。而且前者不能实现后者的所有功能,例如group_by可以统计每个类别的项目属性值的和,而不只是个数。
3、这两个都是用于Series
两个搭配起来,series.value_counts().count()统计一共有几种值。

df.describe()会自行计算数据类型为int的列,而不是全部都计算,所以不用取子集
df.describe()也可以对非int数据类型的数组使用

Pandas基础——DataFrame

Pandas基础——DataFrame
Pandas基础——DataFrame

; 8.2、统计分析实例

Pandas基础——DataFrame
Pandas基础——DataFrame

十、数据文件的读取

一般就是用pd.read_excel()
pd.read_csv(filepath, header, names,index_col, usecols,encoding)
1、filepath设置文件路径,也可以是url
2、header,用来设置文件的哪一行作为列索引的那一行。如果没有设置,就按隐式索引。

header=0,表示文件的第0行作为列索引。
如果header=1,使用第二行,那么第一行的数据会被丢弃。

3、names,当文件中没有想要使用的列索引时,可以手动设置列索引名。是一个列表形式。
names=[“姓名”,”年龄”,”电话”]
如果header和names都设置了,names就会覆盖headers
4、index_col,使用哪一列来作为行的索引。
5、usecols,如果列有很多,不想都使用,就用usecols指定需要的列。
index_col和usecols都可以使用前面的header或者names中设置的列名来指定。
6、如果文件中含有中文,设置参数encoding=”utf-
8″。
7、在使用列名访问DataFrame里的数据时,对于中文列名,需要在列名前面加一个u,表示后面的字符串以unicode格式存储。
print(df[u”经度”])

1、数据缺失值的处理
缺失值不等同于空值,空值是””,缺失值就是NaN。excel中如果在表格中有的值没有填,那读取之后就是空值,因为excel几乎是无边界的,如果是在”表格”范围之外就是缺失值,一班这里也碰不到。
缺失值:

  1. df.isna() 判断是否为缺失值
  2. df.dropna() 删除缺失值
  3. df.fillna() 填充缺失值
    Pandas基础——DataFrame

Pandas基础——DataFrame

空值:

  1. df.isnull()

; 十一、总结

11.1、增添新列的一个例子

Pandas基础——DataFrame

; 11.2、对某列或某行进行字符串操作。

Pandas基础——DataFrame

11.2、

凡是会对原数组作出修改并返回一个新数组的,往往都有一个 inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换

取出一行或者一列的时候返回的是Series,尤其是取一行时,打印结果会是
以列的形式,但结果仍然是一行。

Original: https://blog.csdn.net/qq_48003414/article/details/116976339
Author: IRON POTATO
Title: Pandas基础——DataFrame

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751597/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • NLP标注工具Brat的简单使用

    目录 写在前面 1. 背景 2. Brat的安装与启动 3. Brat的运行 4. 标注配置与标注 (1) 原始数据文件准备 (2) 配置文件配置 (3) 标注 (4) 中文标签配…

    Python 2023年9月15日
    0160
  • Python爬取京东商品评论数据

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年8月1日
    067
  • 【Pandas 基础知识 GroupBy分组】

    前言 本文通过图解Pandas groupby分组机制,介绍了Pandas对Series,DataFrame分组的基础知识和groupby对象的两个重要属性;总结了分组的万能公式和…

    Python 2023年8月22日
    064
  • python3-pandas DataFrame 索引、bool索引、pandas 字符串方法

    1、DataFrame 索引 1.1 普通索引取值 pandas 取行或者列的注意点: 方括号写数组,表示取行,对行进行操作 方括号写字符串,表示取列,对列进行操作 import …

    Python 2023年8月16日
    049
  • python-数组计算

    1、二维数组求和 a = [[1,2],[3,4],[5,6]] print(sum(sum(i) for i in a)) 2、剔除numpy数组中的0值 import nump…

    Python 2023年8月27日
    071
  • Python:实用运维脚本编写(进程/文件/目录操作)

    Python在很大程度上可以对shell脚本进行替代。笔者一般单行命令用shell,复杂点的多行操作就直接用Python了。这篇文章就归纳一下Python的一些实用脚本操作。 1….

    Python 2023年10月28日
    039
  • ES 客户端 RestHighLevelClient Connection reset by peer 亲测有效 2022-11-05

    导读 最新公司ES集群老出现连接关闭,进而导致查询|写入ES时报错,报错日志显示如下 [2m2022-10-23 14:13:10.088 – ERROR…

    Python 2023年10月16日
    049
  • mindspore.dataset的map问题

    1、创建一个包含transform的自定义类并实例化 2. 类的实现如下: 请注意:在call函数中,我并没有调用init中定义的transform操作。 3. ImageFold…

    Python 2023年8月24日
    066
  • 销售额预测_机器学习

    小白第一次写,欢迎大佬们指教,在此谢过。 本文主要介绍运用ARMA开展销售额预测 第一步当然还是引入所需要的数据包 import numpy as np import pandas…

    Python 2023年8月7日
    041
  • matploblib中文显示问题

    使用matplotlib中文,需要导入如下设置: mpl.rcParams[‘font.family’] = ‘SimHei’# m…

    Python 2023年9月1日
    044
  • [快速上手RN] 3. React native 制作底部导航栏 Bottom Tab Bar

    系列教程 1.最终效果 首先我们确认目标 1. 安装依赖 我们所需要的依赖如下 安装命令如下,如果觉得麻烦可以复制粘贴~ react-navigation npm install …

    Python 2023年11月8日
    038
  • 操作系统的介绍

    操作系统的介绍 1.什么是操作系统 操作系统实际上是一个协调、管理和控制计算机硬件和软件资源的控制程序。 [En] The operating system is actually…

    Python 2023年5月23日
    055
  • Python xx直聘 | 数据分析师岗位 | 分析可视化

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 import numpy as npimport pandas as pdfrom pyecharts.charts im…

    Python 2023年8月21日
    077
  • 生产中遇到的Spring项目Bean的多次加载问题

    问题现象 最近在本地调试公司的一个Web项目时,无意中发现日志中出现了两次同一个服务的init记录,项目都是基于Spring来搭建的,按理说服务都是单例的,应该只有一次服务加载日志…

    Python 2023年10月18日
    047
  • 用Python来写个小型购物车程序

    0x1 前言 Python语言能做很多东西的,像数据分析啊、自动化、开发、 爬虫(真的很棒哟,初学者玩很有成就感的啊哈哈)等等还有挺多。 0x2 用Python编写的一个小型购物车…

    Python 2023年10月30日
    050
  • Python 什么是flask框架?快速入门

    一、Python flask框架 前言 1.Python 面向对象的高级编程语言,以其语法简单、免费开源、免编译扩展性高,同时也可以嵌入到C/C++程序和丰富的第三方库,Pytho…

    Python 2023年8月9日
    056
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球