数据可视化笔记记录(二)pandas

news2024/11/20 10:41:27

笔记内容是根据B站上面的一位老师的视频而记录了,因为我也还在学习,所以个人理解可能会出现错误,若有错误请指出。另外这篇文章会很长
B站视频连接、

numpy,matplotlib的学习记录

pandas 学习记录

SerIes结构,一图胜千言
在这里插入图片描述

Series创建

pd.Series(data=None, index=None, dtype=None, name=None, copy=False)

data就是输入的数据(列表,ndarray数组,字典)
index索引值,可以传递列表或者数组
dtype 指定数据类型,没有则自行推断
name 为Series指定一个名字
copy 表示对data进行拷贝,默认为False

列表创建

	arr = [3,10,23,4,5]
	s = pd.Series(arr)
	print(s)
	/*结果
0     3
1    10
2    23
3     4
4     5
index values
	*/
	# 通过标签取得对应的值或者修改对应的值,如果没有为-1的index,那么s[-1]会报错

字典创建

一个键对标一行,键是索引

d={'a':1,'b':2,'c':3} 
s = pd.Series(d,index=list('cba'))
# 没有d对应的值,那么就是NaN
s = pd.Series(d,index=list('abd'))
print(s)

标量创建

s = pd.Series(100) ,就是只有一个

索引

下标索引

就是按照顺序来的
在这里插入图片描述

标签索引

就是第一列的那个,可以一次性访问多个,假设上面的Series的名字叫做s,那么s[[‘Beijing’,‘Guangzhou’]]就是取出来Beijing和Guangzhou对应的值
多标签会创建一个新的数组
s1 = s[[‘Beijing’,‘Guangzhou’]]

切片

如果是使用下标则包头不包尾,如果是使用标签则是包头又包尾

创建DataFrame对象

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

data就是输入的数据
index就是行标签,不传就是RangeIndex(0,1,2,…,n)n代表data的元素个数
columns:列标签,不传就是RangeIndex(0,1,2,…,n)n代表data的元素个数

使用普通列表创建

data = [1,2,3,4,5,6]
df = pd.DataFrame(data)
在这里插入图片描述

使用嵌套列表创建

每个子列表就是一行数据

data = [['wangyuhen',20],['Lily',30],['yuya',40]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=int)
# dtype 指定数据类型,如果不符合由系统自行推断

在这里插入图片描述

字典嵌套列表

键对应的值的元素长度必须相同(也就是列表长度相同),如果传递了索引,那么索引的长度应该等于数组长度

data={'Name':['张辽','刘备','张飞'],'Age':[28,30,28]}
index = ['rank1','rank2','rank3']
df = pd.DataFrame(data,index=index)
print(df)
print(df.index)
print(df.columns)

在这里插入图片描述

列表嵌套字典

字典的键作为列名

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data,index=['first','second'])
print(df)

在这里插入图片描述

Series创建DataFrame对象

就是字典套Series

c = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(c)
print(df)

在这里插入图片描述

列操作DataFrame

选取数据列

直接用标签名字来选择

data={'Name':['张辽','司马懿','夏侯惇'],
	  'Age':[28,34,23]}
index=['rank1','rank2','rank3']
df = pd.DataFrame(data,index=index)
print(df)
print(df['Name'])

在这里插入图片描述

列添加

直接使用df[‘列’]=值

    d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
         'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
    df = pd.DataFrame(d)

    # 使用df['列']=值,插入新的数据列
    print("df['列']=值添加新的列")
    df['three'] = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
    print(df)

    # 将已经存在的数据列相加运算,从而创建一个新的列
    print("运算产生列")
    df['five'] = df['one'] + df['three']
    print(df)

在这里插入图片描述

insert方法添加

df.insert(loc, column, value, allow_duplicates=False)
# loc 就是插入的索引
# column :插入列的标签,可以是字符串,数字
# value:数值,Series或者数组
# allow_duplicates:允许重复列,默认为False
info = {'Name': ['王曦仪', '于风', '张蔷薇'],
         'Age': [19, 19, 17]}
 df = pd.DataFrame(info)
 df.insert(1, column='Score', value=[99, 98, 98])
 print(df)

在这里插入图片描述

删除数据列

del DataFrameName[‘列名’]
DataFrameName.pop(’列名’),这个有返回值

行操作 DataFrame

标签选取

借助于loc属性
DataFrameName.loc[列名]
DataFrameName.loc[行名,列名]

data = {'one':[1,2,3],'two':[1,2,3,4]}
df = pd.DataFrame(data,index=list('abcd'))
print('原始数据')
print(df)
print('标签为c的数据')
print(df.loc['c'])
print(df.loc[1,'two'])

在这里插入图片描述

也可以切片操作
df.loc[行名1:行名2,列名1:列名2]
df.iloc[行数1:行数2] 不包括行数2

添加行

这个有返回值
df.append(
other, ignore_index=False, verify_integrity=False, sort=False)
other:DataFrame或者Series/dic类对象,或者是这些对象的列表
ignore_index:默认为False,如果为True将不适用index标签,如果在行末追加新数据行就改为True,反之False
verify_integrity:为True,则在创建具有重复项的索引时引发ValueError,为False则不引发
sort:字面意思,排序

data={'Name':['张辽','张居正','王阳明','曹操'],'Age':[29,28,28,29],'Salary':[5000,7000,8000,10000]}
df = pd.DataFrame(data)
df=df.append({'Name':'刘备','Age':28},ignore_index=True)
print(df)

删除行

不会更改元数据,如果要改成更改元数据的,在drop中加一个inplace=True即可
dataFrameName.drop(行名也可以是索引名)

常见的一些函数

调用方式都是通过DataFrame对象名.
下面以df代替DataFrame对象名

名称描述例子
T转置df.T
axes返回由行轴标签和列轴标签的列表df.axes
dtypes返回每列数据的数据类型df.dtypes
empty没有数据或者任意坐标轴的长度为0返回Truedf.empty
columns返回所有列标签df.columns
shape返回含有行数和列数的元组df.shape
size返回元素个数df.size
values使用numpy数组表示DataFrame中的元素值df.values
rename修改列名的df.rename([index/column]={oldname:newname,…}
info打印信息df.info
sort_index(axis,ascending,inpalce)根据行或列进行排序这个参数比较多,下面再看
sor_values(by,axis,ascending,inplace,na_position)上同上同

sort_index(axis,ascending,inplace)
axis:0按照行名排序,1按照列名排序
ascending:为True则升序,为False则降序
inplace:为False不影响源数据,反之影响

df = pd.DataFrame({'b':[1,2,2,3],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3]) 
#默认按照行进行升序排序,也可以写成axis=0,ascending=True
df.sort_index()
# 按照列标签进行升序排序
df.sort_index(axis=1)
# inplace=True,排序结果存放在元数据中
df.sort_index(axis=1,inplace=True)

sor_values(by,axis,ascending,inplace,na_position)
by:若axis=0,就是列名,若axis=1,就是行名
axis:为0就是列,为1就是行,默认按照列进行升序排序
ascending:为True就是升序,反之降序
inplace:为True影响元数据,反之不影响
na_position:为first就是NaN值排序排在第一,last就是排在最后

df = pd.DataFrame({'b':[1,2,3,2],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3]) 
# 按照b列进行升序排序
df.sort_values(by='b')
# 先按b列排序,再按a列升序排序
df.sort_values(by=list('ba'),ascending=[False,True])
# 按照行3进行升序排序
df.sort_values(by=3,axis=1)# 必须指定axis=1,要不然搞成了列了
# 按照行3升序,行0降序
df_sort_values(by=[3,0],axis=1,ascending=[True,False])

一些零碎的知识点

  1. 取数据的时候,先找标签,在找索引,都找不到就报错
  2. 通过name属性可以设置Series的名字:data.name=‘first’,通过index.name属性可以设置Series的index名字:index.name=‘index’
  3. 如果是根据ndarray创建的Series,一改都改,如果原数据源是非Series和ndarray类型时,对Series进行操作的时候不会改变元数据

了解之类的

DataFrame这个数据结构我觉得就像是表格,表格嘛,各个列的数据类型可以不一致.

一些技巧之类

  1. 查看前几条数据
    pdName.head([n]) n就是几条数据,比如要查看前3条记录,那么n就是3,不写就是1,查看后几条数据就是tail(),和head一样
  2. reindex 重新索引,如果新设置的索引与旧的索引有不一致的地方,那么不一致地方的数据改成NaN,如果不想改成NaN可以通过fill_value来设置,fill_value=1.这个会重新生成对象
    pdName.reindex(list(‘cde’))
  3. 对齐运算
    按照索引进行对齐运算,没对齐的位置补NaN
    s1 = pd.Series(np.random.rand(3), index=[“Kelly”,“Anne”,“T-C”])
    s2 = pd.Series(np.random.rand(3), index=[“Anne”,“Kelly”,“LiLy”])

4.删除
pdName.drop(“索引”,inplace=False)
pdName.drop(“索引”,inplace=True)
当inplace=True时,作用到元数据,反之不作用
5. 添加
如果有该索引就是修改,无则添加

本人小白一个,若有错误请指出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实用工具:FastDoc 文档提取工具

实用工具:FastDoc 文档提取工具 简单、实用的 HTTP API 文档生成工具,支持 Spring MVC/Spring Boot 下的控制器信息提取,类似 Swagger 但稍有不同的机制。 在线演示地址在 https://framework.ajaxjs.com/demo/fast-doc/。 关于研发者这工具…

二三层转发原理

二层转发原理 数据帧 二层即数据链路层的转发是以数据帧的格式进行转发,数据帧的格式如下: 目的地址(Destination Address,DA) :可以是单独的地址,或者是广播或组播MAC地址。 源地址(Source Address,SA) :用来识别发送没备,在S…

听说你想用开发者工具调试我的网站?挺可以的啊。25

本篇博客重点为大家介绍,如何禁止用户在浏览器中查看源码,禁用开发者工具调试等前端需求 案例已更新到 爬虫训练场 文章目录禁用右键,禁用 F12禁用 ctrl U 查看源代码,禁用 ctrl shift i 打开开发者工具实现开发者工具无限 deb…

arcgis使用Python脚本进行批量截图

arcgis使用Python脚本进行批量截图 介绍 最近公司数据部那边有个需求,需要结合矢量数据和影像数据,进行批量截图,并且截图中只能有一个图斑,还要添加上相应的水印。 思路 一开始我是准备使用QGIS直接进行批量出图,…

Ant Design在处理业务表单中的一些实践

文章目录前言表单处理实践Modal 清空旧数据使用Form.create和getFieldDecorator对Form进行包装表单控件是switch自定义表单控件Table列表SelectshowSearch 用于在选择框中显示搜索框其他需要注意的组件Tabs其它前言 目前,很多中小企业前端实现采用了react&#xff…

二、总线控制

文章目录一、引子二、总线判优控制1.基本概念2.方式(1)集中式①链式查询方式②计数器定时查询方式③独立请求方式(2)分布式三、总线通信控制1.基本概念2.方式(1)同步通信①介绍②同步式数据输入③同步数据输…

数据结构与算法学习推荐

推荐:官网地址:http://localhost:8000/algorithm/github:https://github.com/paiDaXing-web/You-Dont-Know-Algorithm 点star 大话搜索搜索一般指在有限的状态空间中进行枚举,通过穷尽所有的可能来找到符合条件的解或者解的个数。…

佳能C5235彩色激光复印机复印有底灰

故障描述: 佳能C5235彩色激光复印机,复印的时候有不同颜色的底灰问题; 检测分析: 打印不同纯色的纸张进行测试发现每张纸的上面都有不同颜色的底灰; 拆机进行检测吧,先打开前盖,拧下左右两边的螺…

CMake基础教程

CMake最大优势是跨平台&#xff0c;可以根据不同的平台生成Makefile文件&#xff0c;看下CMake的基础使用。 cmake&#xff08;单目录单文件&#xff09; 第一个最简单的cmake构建。 demo1.cpp代码&#xff1a; #include <iostream>using namespace std;int main(int…

【基于机械臂触觉伺服的物体操控研究】UR5e动力学建模及代码实现

我的毕设题目定为《基于机械臂触觉伺服的物体操控研究》&#xff0c;这个系列主要用于记录做毕设的过程。 前言&#xff1a;UR系列是优傲公司的代表产品&#xff0c;也是目前比较通用的产品级机械臂。所以我打算用该机械臂进行毕设的仿真实现。关于其动力学建模&#xff0c;网…

台阶问题-

台阶问题 题目描述 有NNN级的台阶&#xff0c;你一开始在底部&#xff0c;每次可以向上迈最多KKK级台阶&#xff08;最少111级&#xff09;&#xff0c;问到达第NNN级台阶有多少种不同方式。 输入格式 两个正整数N&#xff0c;K。 输出格式 一个正整数&#xff0c;为不同…

JVM(一)——架构基础

JVM java虚拟机 java gc 主要回收的是 方法区 和 堆中的内容&#xff0c;以下架构图是重点&#xff1a; 方法区和堆是线程共享&#xff0c;java栈、本机方法栈、程序计数器是线程私有。 运行时数据区可以用Runtime.getRuntime()获取 字节码执行引擎&#xff0c;修改程序计数器…

不要怀疑了,个人也是可以做好跨境电商的!

近几年随着跨境电商卖家们赚得盆满钵满&#xff0c;许多人都想从中分一杯羹&#xff0c;进而入住了跨境电商市场&#xff0c;有人与一些公司企业合作&#xff0c;也有人选择了自己做跨境电商平台&#xff0c;个人做的优劣势又有哪些呢&#xff1f; 个人做跨境电商平台最明显突…

A V L树

概念 在之前介绍了搜索二叉树&#xff0c;但是当我们插入的数据若是有序或者接近于有序&#xff0c;那么此时查找的效率底下&#xff0c;于是俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法&#xff1a;当向二叉搜索树中插入新结点后&am…

javaEE学生教学实习计划申报系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 javaEE学生教学实习计划申报系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&…

正点原子【第四期】手把手教你学 Linux之驱动开发篇-01

学习目的 了解驱动开发和应用开发的过程&#xff0c;具有一定的基础就行 第一讲&#xff1a;linux驱动开发与裸机开发区别 刚开始听不懂很正常&#xff0c;等之后学了一点你就会知道它说啥了 第二讲&#xff1a;字符设备驱动开发基础 字符设备驱动是最简单的&#xff0c;块设…

C++ 移动语义

从拷贝说起我们知道&#xff0c;C中有拷贝构造函数和拷贝赋值运算符。那既然是拷贝&#xff0c;听上去就是开销很大的操作。没错&#xff0c;所谓拷贝&#xff0c;就是申请一块新的内存空间&#xff0c;然后将数据复制到新的内存空间中。如果一个对象中都是一些基本类型的数据的…

【Unity3D】绘制物体外框线条盒子

1 需求描述 点选物体、框选物体、绘制外边框 中介绍了物体投影到屏幕上的二维外框绘制方法&#xff0c;本文将介绍物体外框线条盒子绘制方法。 内框&#xff1a;选中物体后&#xff0c;绘制物体的内框&#xff08;紧贴物体、并与物体姿态一致的内框盒子&#xff09;外框&#…

Python与C++语法比较--字符串篇

tags: C Python 写在前面 刷lc从Python转向C, 不只是语法层面, 还要改变很多的API, 这次记录一下C和Python在字符串方面的一些区别, 供参考. 基本区别 Python字符串是不可变类型, 而C的String为容器(本质上是一个类的别名, 说容器有点不合适, 因为容器内的元素类型已经被指…

Kotlin中的Lambda编程

文章目录1.集合的创建与遍历2.集合的函数式API3.Java函数式API的使用1.集合的创建与遍历 传统意义上的集合主要是List和Set&#xff0c;再广泛一点的话&#xff0c;像Map这样的键值对数据结构也可以包含进来。List&#xff0c;Set和Map再Java中都是接口&#xff0c;List主要的…