dataframe常用操作总结

初始化

可以使用array+columns的格式,

d=pd.DataFrame(np.arange(10).reshape(2,5))
df1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])

也可以使用字典+大括号的格式:

df = pd.DataFrame({'a': [1, 2] * 3,
...                    'b': [True, False] * 3,
...                    'c': [1.0, 2.0] * 3})

读csv文件

使用pandas读取csv文件;iloc查看并且修改指定位置的数值,但是不会改变原始的csv文件,重新读取,打印出来还是之前的数据。

csv文件可能有空值,有可能空值全部处于一部分,比如说文件前18行都是2列,但是之后18行是8列,这时读取文件就会报错,提示在18行到19行的地方expected 2 fileds pandas,解决方法是在read_csv参数中加入error_bad_lines=False,这样强制使其不会报错,但是结果是只读取到了前18行

可以先把之前的删除,再使用to_csv写入用来的路径

保存csv文件

保存时默认连同行列名也保存下来,可以使用header=False,index=False去除。如果连同行列名字保存下来,结果就是保存的csv文件会多出行列数。这时候再使用read_csv读取,并且header=0,使用第一行名作索引,就会在最左上角的地方出现Unnamed。这时候再保存,再读取,并且使用fscanf保存到数组中,就会出现全0的情况。

在read_csv时也有header,index_col.它们取0时是取第一行/列作为 索引。header=None和index_col=False等同,分别是对行列操作。

问题来了,如果header=0,选择第一行作为索引,那如果第一行有重复数字怎么办呢,可能导致几个列名是重复的。pandas的解决办法是对重复出现的数字增加小数点的部分进行编号。2222,就会编码为2.1,2.3,2.3,2.4作为索引。

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
c = ['a', 'b', 'c']
r = ['A', 'B', 'C']
df = pd.DataFrame(data=data,  columns=c, index=r)

excel文件可以另存为csv格式,但是貌似会导致新生成的csv文件行数特别多,很多行是nan

切片

对列作切片。df["XXX"]可以得到指定的列名为XXX的列数据构成的series。[]中还可以是list类型。

根据列数据的属性作切片,df.select_dtype(exclude/include="object").colums

对列作删除。df.drop(["XXX"],axis=1),删除XXX列,注意轴方向要选取axis=1

drop(labels, axis=0, level=None, inplace=False, errors='raise'),默认按行删除

对行作切片。df.loc[[]],注意是两层中括号,否则得到的是列形式的series。中括号中是行索引。

重置索引

在数据清洗后,一些数据被清除:

df.drop(index=[0, 1])     ************>df.drop([0, 1])***************>df.drop([0, 1]axis=0)
df.drop(columns=['B', 'C'])***********df.drop(['B', 'C'], axis=1)

保留下的dataframe,其每一行的索引和之前一样,但是不同行之间的索引不再连续,这时用for循环按照行数遍历就会出问题。我们可以使用reset_index()重置索引。重置前后打印df会发现df多出一列名为“index”或者“level_0”的列,这是因为reset_index()默认将原有的索引值保存为新的一列。解决办法也很简单:

(df.reset_index(drop=True))

属性

df.shape,得到行数与列数

df.head(),得到dataframe的前五行

df.tail(),得到dataframe的后五行

df.head().append(df.tail()),将前后五行连接出来,打印出来可以观察数据

df.isnull().sum(),得到一个series,索引是列名,数据值是该列中空值的数目

pd.melt,pivot的逆操作,将列名视作数据。

通过列的属性选择df的子集

df.select_dtypes(include='bool')
df.select_dtypes(exclude=['int'])

返回的仍然是dataframe,再使用columns则可以得到筛选之后的列名组成,形式如

Index(['A', 'B', 'C'], dtype='object')

取values可以得到数组类型的列名,再取tolist可以得到list

dtype可以得到dataframe的字段类型,使用astype可以对其转换。

df['col2'] = df['col2'].astype('int')

取values之后其实就是ndarray类型的,这时如果想将dadaframe转置,可以利用array的转置T,然后列名和行名分别使用之前的行名和列名构建新的dataframe

df2 = pd.DataFrame(df.values.T, index=df.columns, columns=df.index)

改变整列数据

一般每一列代表一个特征,为了验证某一特征对最终结果的影响,需要对该列数据进行整体变换,可以使用map的方法:

df["feature1"]=df["feature1"].map(lambda x:x*2)

https://www.tuziang.com/combat/732.html

https://www.jianshu.com/p/6e35d37e7709

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

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

相关文章

DEDE无简略标题时显示完整标题

新闻的标题需要进行字数限制,这就需要加入一个title属性,让鼠标放上去的时候显示完整标题。另外目前的调用只能同时调用一种标题方式,不过可 以采用以下方法,进行判断,无简略标题显示完整标题。例如dede早期版本中的”…

清华大学发布:人脸识别最全知识图谱

来源:智东西摘要:本期我们推荐来自清华大学副教授唐杰领导的学者大数据挖掘项目Aminer的研究报告,讲解人脸识别技术及其应用领域,介绍人脸识别领域的国内玩人才并预测该技术的发展趋势。自20世纪下半叶,计算机视觉技术…

图像变换dpi(tif->jpg),直方图均衡化,腐蚀膨胀,分水岭,模板匹配,直线检测

一.图像变换dpi 1.示例1 import numpy as np from PIL import Image import cv2 def test_dp():path./gt_1.tif# imgImage.open(path)# print(img.size)# print(img.info)imgcv2.imread(path)imgImage.fromarray(img)print(img.size)print(img.info)img.save(test.jpg, dpi(3…

CV中的经典网络模型

目标检测 目标检测,不仅要识别目标是什么(分类),还要知道目标的具体位置(可以当作回归来做)。 RCNN Selective Search 算法获得候选框,Alexnet提取特征,SVM对每个候选框区域打分。…

无表头单链表增删改查操作

1、返回单链表中第pos个结点中的元素,若pos超出范围,则返回02、把单链表中第pos个结点的值修改为x的值,若修改成功返回1,否则返回03、向单链表的表头插入一个元素 4、向单链表的末尾添加一个元素…

JBU联合双边上采样

很多图像处理算法,如立体视觉中的深度估计,图像上色,高动态范围HDR中的tone mapping,图像分割,都有一个共性的问题:寻找一个全局的解,这个解是指一个分段的piecewise平滑含糊,描述了…

技术阅读周刊第十一期

技术阅读周刊,每周更新。 历史更新 20231124:第七期20231201:第八期20231215:第十‍期 A Comprehensive guide to Spring Boot 3.2 with Java 21, Virtual Threads, Spring Security, PostgreSQL, Flyway, Caching, Micrometer, O…

数据智能是大数据的未来

来源:中国信息产业网 近日,两家大数据领域的代表性企业Cloudera和Hortonworks宣布了它们相对平等的合并,宣称新公司将创建世界领先的下一代数据平台并提供业界首个企业数据云,这令很多人感到意外,大数据的未来何去何从…

利用GAN原始框架生成手写数字

这一篇GAN文章只是让产生的结果尽量真实,还不能分类。 本次手写数字GAN的思想: 对于辨别器,利用真实的手写数字(真样本,对应的标签为真标签)和随机噪声经过生成器产生的样本(假样本&#xff0…

DL也懂纹理吗——图像的纹理特征

工作中遇到一个问题:对于同一场景,训练好的DL模型能把大部分样本分类准确,而对于少量负样本,DL会错分到另外一个对立的类中。错分的样本可以认为是难分的样本,但是我们还想知道这两种样本到底是哪里的差异导致DL做出了…

排序算法--(冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序)

一.时间复杂度分析 - **时间复杂度**:对排序数据的总的操作次数。反应当n变化时,操作次数呈现什么规律 - **空间复杂度**:算法在计算机内执行时所需要的存储空间的容量,它也是数据规模n的函数。 1.例题: 有一个字符串数组&…

肠里细菌“肚里蛔虫”:肠脑研究缘何越来越热

来源:科学网最懂你大脑的,可能不是“肚子里的蛔虫”,而是肠子里的细菌——肠道菌群对神经系统、心理和行为方面的影响正成为一个新兴热点领域。在日前举办的美国神经科学学会年会上,一张海报上的大脑切片显微镜图像显示&#xff0…

SVM原理与实战

先看线性可分问题。对于线性可分,其实感知机就可以解决。但是感知机只是找到一个超平面将数据分开,而这样的超平面可能是平行的无限多个,我们需要在这其中找到最优的一个。怎么衡量一个超平面是不是最优的呢,直观上讲,…

2014-01-01

一:HyperlinkButton点击后打开新窗口的方法 1,直接在界面中写这段代码就可以了: <HyperlinkButton NavigateUri"http://www.cnblogs.com/wsdj-ITtech/" Content"Click Me" TargetName"_blank" FontSize"28" Height"50"…

李飞飞高徒:斯坦福如何打造基于视觉的智能医院?

作者&#xff1a;Albert Haque、Michelle Guo来源&#xff1a;机器之心自 2009 年担任斯坦福人工智能实验室和视觉实验室的负责人&#xff0c;李飞飞在推动计算机视觉方面研究的同时&#xff0c;还密切关注 AI 医疗的发展。昨日&#xff0c;李飞飞离任斯坦福 AI 实验室负责人一…

tensorflow知识点

一.bazel编译tensorflow注意版本号: 在/tensorflow/tensorflow/configure.py 查看bazel版本号 https://github.com/tensorflow/tensorflow https://github.com/bazelbuild/bazel/releases?after0.26.1 https://tensorflow.google.cn/ 二&#xff0c;基础知识点 1.打印出…

eclipse中如何导入jar包

如图&#xff0c;首先右键点击项目&#xff0c;选择最下面的properties&#xff0c; 然后进去之后点击java build path&#xff0c;右边会出来4个选项卡&#xff0c;选择libraries&#xff0c; 这时候最右边会有多个选项&#xff0c;第一个add jars是添加项目文件中的jar包&…

线性-LR-softmax傻傻分不清楚

softmax 对于分类网络&#xff0c;最后一层往往是全连接层&#xff0c;如果是N分类&#xff0c;那么最终的全连接层有N个结点。很显然&#xff0c;每个节点对应一个类&#xff0c;该节点的权重越大&#xff0c;说明网络越倾向于认为输入样本属于该类。这其实就是Softmax的思想…

一图看懂国外智能网联汽车传感器产业发展!

来源&#xff1a;赛迪智库编辑&#xff1a;煜 佳未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#…

Centos6的VSFTP服务器配置使用教程

Centos 6 的VSFTP 关闭SELinux&#xff0c;在终端机输入 vi /etc/selinux/config SELINUXenforcing 改成 SELINUXdisabled 关闭selinux&#xff0c;接著输入 setenforce 0 传送资料的需要&#xff0c;可以暂时开放root的权限 vi /etc/vsftpd/user_list #root service vsftpd re…