首页 > 其他分享 >一文搞定Pandas核心概念之DataFrame

一文搞定Pandas核心概念之DataFrame

时间:2023-09-27 10:35:25浏览次数:40  
标签:index 搞定 name df col2 DataFrame col1 Pandas


 

DataFrame概述

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。如下图所示:整个表格是DataFrame,每一列就是一个Series。关于Series可以参考文章: 

一文搞定Pandas核心概念之DataFrame_python

 

DataFrame 构造方法如下:

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

参数说明:

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

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

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

dtype:数据类型。

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

DataFrame获取元素的经典实例

实例1

import pandas as pd
data = [['kevin',40],['mike',40],['tony',50]]
df = pd.DataFrame(data,columns=['name','Age'])
print(df)

输出

<class 'pandas.core.frame.DataFrame'>

name Age

0 kevin 40

1 mike 40

2 tony 50

实例2

我们还可以使用字典创建DataFrame

data = [{'a': 40, 'b': 40},{'c': 50},{'a': 50, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print (df)

a b c

0 40.0 40.0 NaN

1 NaN NaN 50.0

2 50.0 10.0 20.0

注意这里没有对应的部分数据为 NaN。

实例3

我们可以改变用如下方法改变index的值,代码如下:

data1 = [['kevin',40],['mike',40],['tony',50]]
df = pd.DataFrame(data1,columns=['name','Age'],index = ["a", "b", "c"])
print(df)

输出

name Age

a kevin 40

b mike 40

c tony 50

默认索引值是0 1 2

实例4

Pandas 可以使用 loc 属性返回指定索引对应到某一行:

例如获取上面例子中kevin的值,可以通过如下方法

print(df.loc["a","name"])

kevin

实例5

获取a 行所有的值可以使用

print(df.loc["a"])

输出

name kevin

Age 40

Name: a, dtype: object

实例6

获取name列所有的值可以使用

print(df.loc[:,"name"])

输出

a kevin

b mike

c tony

Name: name, dtype: object

实例7

获取index a和b 所在的name列的值可以使用

print(df.loc["a":"b","name"])

输出

a kevin

b mike

Name: name, dtype: object

API的概要说明

数据清理

  • df.columns = ['a','b','c']:重命名列名
  • pd.isnull():检查DataFrame对象中的空值,并返回一个Boolean数组
  • pd.notnull():检查DataFrame对象中的非空值,并返回一个Boolean数组
  • df.dropna():删除所有包含空值的行
  • df.dropna(axis=1):删除所有包含空值的列
  • df.dropna(axis=1,thresh=n):删除所有小于n个非空值的行
  • df.fillna(x):用x替换DataFrame对象中所有的空值
  • s.astype(float):将Series中的数据类型更改为float类型
  • s.replace(1,'one'):用‘one’代替所有等于1的值
  • s.replace([1,3],['one','three']):用'one'代替1,用'three'代替3
  • df.rename(columns=lambda x: x + 1):批量更改列名
  • df.rename(columns={'old_name': 'new_ name'}):选择性更改列名
  • df.set_index('column_one'):更改索引列
  • df.rename(index=lambda x: x + 1):批量重命名索引

数据处理:Filter、Sort和GroupBy

  • df[df[col] > 0.5]:选择col列的值大于0.5的行
  • df.sort_values(col1):按照列col1排序数据,默认升序排列
  • df.sort_values(col2, ascending=False):按照列col1降序排列数据
  • df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据
  • df.groupby(col):返回一个按列col进行分组的Groupby对象
  • df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象
  • df.groupby(col1)[col2]:返回按列col1进行分组后,列col2的均值
  • df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表
  • df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值
  • data.apply(np.mean):对DataFrame中的每一列应用函数np.mean
  • data.apply(np.max,axis=1):对DataFrame中的每一行应用函数np.max

数据合并

  • df1.append(df2):将df2中的行添加到df1的尾部
  • df.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部
  • df1.join(df2,on=col1,how='inner'):对df1的列和df2的列执行SQL形式的join

数据统计

  • df.describe():查看数据值列的汇总统计
  • df.mean():返回所有列的均值
  • df.corr():返回列与列之间的相关系数
  • df.count():返回每一列中的非空值的个数
  • df.max():返回每一列的最大值
  • df.min():返回每一列的最小值
  • df.median():返回每一列的中位数
  • df.std():返回每一列的标准差

标签:index,搞定,name,df,col2,DataFrame,col1,Pandas
From: https://blog.51cto.com/liwen629/7621185

相关文章

  • 干货!一文搞定无头浏览器的概念以及在selenium中的应用
     无头浏览器无头浏览器,即HeadlessBrowser,是一种没有界面的浏览器。它拥有完整的浏览器内核,包括JavaScript解析引擎、渲染引擎等。与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是我们依然可以用GUI测试框架的截图功能截取它执行中的页面。在这里强调一下......
  • 搞定!详解MeterSphere 配置外部Mysql5.7的全过程
     最近试用了MeterSphere做接口测试平台,感觉使用起来非常方便,最重要的是开源免费!官方文档还是非常详细的,这里我就不多介绍了,感兴趣的同学可以参考:https://metersphere.io/docs/v2.x/经过讨论,决定在测试团队推广。由于公司数据库管理策略,数据库必须通过dba统一管理,所以需要MeterSph......
  • 【3.0】Pandas DataFrame入门
    【一】引入DataFrame是Pandas的重要数据结构之一,也是在使用Pandas进行数据分析过程中最常用的结构之一,可以这么说,掌握了DataFrame的用法,你就拥有了学习数据分析的基本能力。【二】认识DataFrame结构DataFrame一个表格型的数据结构,既有行标签(index),又有列标签(columns),......
  • 【2.0】Pandas Series入门
    【一】PandasSeriesSeries结构,也称Series序列,是Pandas常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系。Series可以保存任何数据类型,比如整数、字符串、浮点数、Python对象等,它的标签默认为整数,......
  • 【7.0】Pandas csv读写文件
    【一】PythonPandas读取文件当使用Pandas做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda提供了多种读取数据的方法:read_csv()用于读取文本文件read_json()用于读取json文件read_sql_query()读取sql语句的,【1】CSV文件读......
  • 【6.0】Pandas绘图
    【一】Pandas绘图Pandas在数据分析、数据可视化方面有着较为广泛的应用,Pandas对Matplotlib绘图软件包的基础上单独封装了一个plot()接口,通过调用该接口可以实现常用的绘图操作。本节我们深入讲解一下Pandas的绘图操作。Pandas之所以能够实现了数据可视化,主要利用了......
  • 【Pandas笔记总结】
    【一】Pandos初识Pandas是什么Pandas主要特点Pandas主要优势Pandas内置数据结构Pandas下载与安装【二】PandasSeries入门PandasSeries是什么PandasSeries创建PandasSeries访问PandasSeries常用属性PandasSeries常用方法【三】PandasDataFrame入门P......
  • 【5.0】Pandas描述性统计
    【一】PythonPandas描述性统计描述统计学(descriptivestatistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律、特征做出综合性的描述分析。Pandas库正是对描述统计学知识完美应用的体现,可以说如果没......
  • 【4.0】Pandas Panel三维数据结构
    【一】三维数据结构Panel结构也称“面板结构”,它源自于PanelData一词,翻译为“面板数据”。如果您使用的是Pandas0.25以前的版本,那么您需要掌握本节内容,否则,作为了解内容即可。自Pandas0.25版本后,Panel结构已经被废弃。Panel是一个用来承载数据的三维数据结构,它......
  • 【8.0】Pandas和NumPy的比较
    【一】引入我们知道Pandas是在NumPy的基础构建而来因此,熟悉NumPy可以更加有效的帮助我们使用Pandas。NumPy主要用C语言编写因此,在计算还和处理一维或多维数组方面,它要比Python数组快得多。关于NumPy的学习,可以参考《PythonNumPy教程》。【二】创建数组数......