pandas 合并所有列_Python学习:Pandas库

      pandas包含数据结构和数据处理工具的设计使得在Python中进行数据清洗和分析非常快捷。pandas经常是和NumPy,Scipy以及数据可视化工具matplotlib一起使用的。pandas支持大部分NumPy语言风格的数组计算,但最大的不同在于pandas是用于处理表格型或异质型数据的。而NumPy更适合处理同质型的数值类数组数据。

    在第一次学习Pandas的过程中,你会发现你需要记忆很多的函数和方法。所以在这里我们汇总一下Pandas官方文档中比较常用的函数和方法,以方便大家记忆。

df:任意的Pandas DataFrame对象
s:  任意的Pandas Series对象

一、关键包导入:
  • import pandas as pd

  • import numpy as np

二、导入数据:
  • pd.read_csv(filename)      逗号是默认分隔符

  • pd.read_table(filename)    制表符('\t')是默认分隔符

  • pd.read_excel(filename)    读取Excel数据

  • pd.read_sql(query, connection_object):从SQL表/库导入数据

  • pd.read_json(json_string):读JSON格式

  • pd.DataFrame(dict):从字典对象导入数据,Key是列名,Value是数据

pd.read_csv(flie,header=,sep=,na_values=,skiprows=,nrows=,chunksize=,index_col=,names=)    

  • header:用作列名的行号,默认是0(第一行),如果没有列名的话,应该是None

  • sep:用于分隔每行字段的字符序列或是正则表达式

  • na_values:需要用NA替换的值序列

  • skiprows:从文件开头处起,需要跳过的行数或行号列表

  • nrows:从文件开头处读入的行数

  • chunksize:用于迭代的块大小

  • index_col:用作结果中行索引的列号或列名,可以是一个单一的名称/数字,也可以是一个分层索引

  • names:结果的列名列表

三、导出数据:
  • df.to_csv(filename):导出数据到CSV文件

  • df.to_excel(filename):导出数据到Excel

  • df.to_sql(table_name, connection_object):导出数据到SQL表

  • df.to_json(filename):以Json格式导出数据到文本文件

四、创建对象

  • obj=pd.Series([4,7,-5],index=['a','b','c'])

  • obj=pd.DataFrame(data,columns=['year'],index=['one'])

五、查看数据:
  • df.head(n):查看DataFrame对象的前n行

  • df.tail(n):查看DataFrame对象的最后n行

  • df.info():查看索引、数据类型和内存信息

  • df.shape:查看行数和列数

  • df.describe():查看数值型列的汇总统计

  • df.dtypes:每一列数据的格式

  • df.isnull():查看某一列空值

  • df.columns :查看列名称

  • df.values:查看数据表的值

  • df['B'].unique():查看某一列的唯一值

  • s.value_counts():查看Series对象的唯一值和计数

  • df.apply(pd.value_counts).fillna(0):查看DataFrame对象中每一列的唯一值和计数,并对NA填充0

六、数据选取:
  • df[col]:根据列名,并以Series的形式返回列

  • df[[col1, col2]]:以DataFrame形式返回多列

  • df[n:m]:以DataFrame形式返回n到m-1行

  • df.loc[val]:根据标签选择单行或多行

  • df.loc[:,val]:根据标签选择单列或多列

  • df.loc[val1,val2]:同时选择行和列的一部分

  • df.iloc[where]:根据整数位置选择单行或多行

  • df.iloc[:,where]:根据整数位置选择单列或多列

  • df.iloc[where_i,where_j]:根据整数位置选择行和列

*loc切片是首尾闭区间;iloc切片是首闭尾开

七、数据清洗:
  • df.columns = ['a','b','c']:重命名列名

  • pd.isnull():检查DataFrame对象中的空值

  • pd.notnull():检查DataFrame对象中的非空值

  • 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):批量重命名索引

  • df.drop_duplicates() :删除后出现的重复值

  • df.drop_duplicates(keep='last'):删除先出现的重复值

  • df.drop_duplicates(['k1']) :基于k1列删除重复值

  • df['city']=df['city'].map(str.strip) 

  • pd.cut(data,4) :分箱

八、数据处理:

  • 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('city')['id'].count() :按城市对id字段进行计数

  • df.groupby('city')['price'].agg([np.sum, np.mean]):对city字段进行汇总,并分别计算prince的合计和均值

  • 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的尾部

  • pd.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部

  • df1.join(df2,on=col1,how='inner'):对df1的列和df2的列执行SQL形式的join

  • pd.merge(df1,df2,on='key') :  按指定连接健合并

*pd.concat():join接收inner或outer。表示其他轴向上的索引是按交集(inner)还是并集(outer)进行合并。默认为outer。当axis=1的时候,concat做行对齐,然后将不同列名称的两张或多张表合并。当两个表索引不完全一样时,可以使用join参数选择是内连接还是外连接。在内连接的情况下,仅仅返回索引重叠部分。在外连接的情况下,则显示索引的并集部分数据,不足的地方则使用空值填补。axis=0时同理

*df.append():append方法也可以用于纵向合并两张表。但是append方法实现纵向表堆叠有一个前提条件,那就是两张表的列名需要完全一致

*pd.merge()常用参数:

5ff2ba938f6f2c672eae85770eae9f10.png

十、数据统计:
  • df.describe():查看数据特征的汇总统计

  • df.mean():返回所有列的均值

  • df.corr():返回列与列之间的相关系数

  • df.count():返回每一列中的非空值的个数

  • df.max():返回每一列的最大值

  • df.min():返回每一列的最小值

  • df.idxmin():返回最小值所在的索引标签

  • df.argmin():返回最小值所在的索引位置

  • df.median():返回每一列的中位数

  • df.std():返回每一列的标准差

*传入axis=’columns'或者axis=1,则会对一行上各列值进行操作。

除非整个切片都是NA,否则NA值是自动被排除的,可以通过禁用skipna来实现不排除NA值:skipna=False


文末福利:

    网上可以搜到大量的Pandas教程和官方文档,但没有简单的方法来练习。教程是很好的资源,但要付诸实践。只有实践,才能更好的加深学习。针对pandas库函数的一些常用用法,本站搜索到了一些关于Pandas的练习题含答案,每一个类型包含了相应的练习数据、题目、注释以及解答等4个文件。大家可以根据自己的薄弱点针对性训练,相信一定能有所提高!

关注本公众号,后台回复【Pandas学习】即可获得这些练习题资料

一路同行

ID : 进阶的CVCoder

一起寻找生命中的光.....

beec194b16e2f31c4c899ca6d6b963c4.png

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

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

相关文章

进程和多线程

一、进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ、Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线…

CUMT--Java复习--网络编程

目录 一、Java网络API 1、InetAddress类 2、URL类 3、URLConnection类 4、URLDecoder类和URLEncoder类 二、基于TCP的网络编程 1、Socket类 2、ServerSocket类 三、网络通信过程 一、Java网络API Java中有关网络方面的功能都定义在java.net中。 1、InetAddress类 Jav…

iOS懒加载

1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其getter方法。说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不…

【Django】Django Debug Toolbar调试工具配置

正在发愁怎么调试Django,就遇到了Django Debug Toolbar这个利器。 先说遇到的问题: 网上也有教程,不过五花八门的,挨个尝试了一遍,也没有成功运行。最后终于找到问题所在: 从开发服务器日志可知&#xff1a…

python中提取pdf文件某些页_人工智能|Python提取PDF中的文本并朗读

题前的话之前有老师在群里推荐这个,我看了一眼觉得还是蛮有趣的,然后就忘了……昨天又看到这个《宅男福利!我50行Python代码让小姐姐给你读Pdf》,今天于是开始自己尝试,谁知道pdfplumber库怎么也安装不了,最…

[UVA315]Network(tarjan, 求割点)

题目链接:https://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem251 求割点,除了输入用strtok和sscanf处理输入以外,对于求割点的tarjan算法有了进一步理解。 特别注意88行&#xff0…

prim求最短路径C语言,[图论]Prim算法求最小支撑树和最短路径

这个是以前所学,现在总结成博文一篇。对于图论中的求解最小支撑树问题和最短路径问题都有比较经典的算法,比如最小支撑树可以采用“破圈法”,求解最短路径可以用“Dijkstra算法”。这里笔者将回顾下求解最小支撑树的Prim算法和最短路径算法。…

pycharm镜像源_pycharm安装第三方库

点击蓝字关注我们hello,大家好,我是你们的小编大飞。小编一直在学习编程语言,挑选了很久之后决定入了python的坑(bushi)。而python之所以火,是因为它专注于如何解决问题、自由开放的社区环境以及丰富的第三方库。几乎可以这么说&a…

android系统源码的环境下用make来编译,Android源码编译系统入门

做过 Android 平台开发的朋友对make,mm或make clean命令应该很熟悉,但也许大家只是熟知这些命令的作用却不知道这些命令底下有些什么原理?那么今天我就带着大家推开Android编译系统的大门,探索一下这片未知的恐怖之森(问啥要用恐怖…

(mac)阿里云ECS服务器配置过程

-----首先本人是半只脚入门的iOS开发者,弄这个只是单纯想多学点东西。 -----阿里云服务器的配置选择:既然是学习用的,最最基础的配置就行了。1M带宽,1核1G...这就不详述了。没啥可选的,(其中有个创建实例&a…

android 换到iphone,从安卓换到苹果到底是什么感受?最后一个让我彻底放弃了iPhone!...

原标题:从安卓换到苹果到底是什么感受?最后一个让我彻底放弃了iPhone!iPhone X是近几年来苹果最具创新力的iPhone,然而高昂的售价让很多消费者望而却步。随着今年苹果秋季新品发布会的临近,苹果即将发布价格更低廉&…

php 5.5 xhprof for windows

今天看到一个好的性能优软件xhprof(有facebook开发的类库)在国内找了很多网站都没有找到相关php5.5的扩展,只好FQ还是外面的世界精彩一下就找到了link (http://windows.php.net/downloads/pecl/releases/xhprof/0.10.6/)如果不能FQ的小伙伴可以到我的百度…

鸿蒙分布式体验,一张图看懂鸿蒙OS 2.0 分布式能力升级构筑全场景体验

原标题:一张图看懂鸿蒙OS 2.0 分布式能力升级构筑全场景体验【手机中国新闻】9月10日下午,华为召开HDC2020大会,全新的HarmonyOS 2.0正式发布。新系统的分布式能力全面升级,同时还为开发者提供了完整分布式设备与应用开发生态&…

如何在android模拟器中安装apk

1. 启动android模拟器 2. 将要安装的apk,拷贝在与adb.exe同文件夹中。我的路径:D:\android\android-sdk-windows\platform-tools 3. 在cmd中,进入上目录,输入adb install xxx.apk,最后可看见success 4. 回到android模拟…

传感器系列之4.3流量传感器

4.3 流量数据采集实验 一、实验目的掌握水流量计的结构与工作原理掌握霍尔传感器的使用二、实验材料具有USB 串口通讯的PC 机1 台ADS1.2 集成开发软件1 套J-Link-ARM 仿真器及软件1 套NXP LPC2378 实验节点板1 个LCD 显示实验板1 个BMP085数字气压传感器模块1个三、实验原理流量…

鸿蒙日程管理若离,2020华为HDC日程确定,鸿蒙、HMS以及EMUI 11成最关注点

HDC:华为开发者大会,目前已经确定将在9月10日正式开幕。日前华为已经在其官网公布了HDC的日程,从现在的消息看华为开发者大会有三大点最受业内关注。鸿蒙操作系统鸿蒙操作系统应该是大家关注最大的话题,不过此前余承东已经正式表示…

语言课设医院诊疗系统_江苏孤独症孩子有哪些典型特征?上海六一儿童医院

孤独症孩子有哪些典型特征当家长发现孩子不爱说话,不理人的时候,有时怀疑孩子是不是患了孤独症。对于孤独症的孩子和正常的孩子还是不一样的。那么,孤独症孩子有哪些典型的特征呢?孤独症孩子的典型特征主要有以下几点:特征一&…

android 6.0适应的机型,提升用户体验 可升Android 6.0机型盘点

原标题:提升用户体验 可升Android 6.0机型盘点【手机中国 导购】2009年Android系统正式发布,由此加速手机走向智能化进度。如今,随着Android系统日渐成熟,众多手机厂商都在此基础上研发出符合自家特色的系统版本,并且流…

antd 能自适应吗_一种能自适应识别母线运行方式的备自投装置应用探讨

中山供电局的研究人员江清楷,在2019年第8期《电气技术》杂志上撰文,介绍了一种220kV备自投装置,列出了母联备自投和线路备自投的充电条件及起动条件。以220kV逸仙变电站为例,指出该备自投装置在双母线单分段接线的变电站应用中存在…

html页面tableview,用JS写的一个TableView控件代码

请看看编码是否规范,使用是否方便HTML:代码编号姓名{value}{value}编号名称{value}{value}Javascript:代码//class TableView {//构造函数function TableView(ID){var htmlTable document.getElementById(ID);this.container htmlTable.getElementsByTagName(&quo…