pandas DataFrame创建方法的方式


Posted in Python onAugust 02, 2019

在pandas里,DataFrame是最经常用的数据结构,这里总结生成和添加数据的方法:

①、把其他格式的数据整理到DataFrame中;
②在已有的DataFrame中插入N列或者N行。

1. 字典类型读取到DataFrame(dict to DataFrame)

假如我们在做实验的时候得到的数据是dict类型,为了方便之后的数据统计和计算,我们想把它转换为DataFrame,存在很多写法,这里简单介绍常用的几种:

方法一:直接使用pd.DataFrame(data=test_dict)即可,括号中的data=写不写都可以,具体如下:

test_dict = {'id':[1,2,3,4,5,6],'name':['Alice','Bob','Cindy','Eric','Helen','Grace '],'math':[90,89,99,78,97,93],'english':[89,94,80,94,94,90]}
#[1].直接写入参数test_dict
test_dict_df = pd.DataFrame(test_dict)
#[2].字典型赋值
test_dict_df = pd.DataFrame(data=test_dict)

那么,我们就得到了一个DataFrame,如下:

pandas DataFrame创建方法的方式

应该就是这个样子了。

方法二:使用from_dict方法:

test_dict_df = pd.DataFrame.from_dict(test_dict)

结果是一样的,不再重复贴图。

其他方法:如果你的dict变量很小,例如{'id':1,'name':'Alice'},你想直接写到括号里:

test_dict_df = pd.DataFrame({'id':1,'name':'Alice'}) # wrong style

这样是不行的,会报错ValueError: If using all scalar values, you must pass an index,是因为如果你提供的是一个标量,必须还得提供一个索引Index,所以你可以这么写:

test_dict_df = pd.DataFrame({'id':1,'name':'Alice'},pd.Index(range(1)))

后面的可以写多个pd.Index(range(3),就会生成三行一样的,是因为前面的dict型变量只有一组值,如果有多个,后面的Index必须跟前面的数据组数一致,否则会报错:

pd.DataFrame({'id':[1,2],'name':['Alice','Bob']},pd.Index(range(2))) #must be 2 in range function.

关于选择列,有些时候我们只需要选择dict中部分的键当做DataFrame的列,那么我们可以使用columns参数,例如我们只选择'id','name'列:

test_dict_df = pd.DataFrame(data=test_dict,columns=['id','name']) #only choose 'id' and 'name' columns

这里就不在多写了,后续变更颜色添加内容。

2. csv文件构建DataFrame(csv to DataFrame)

我们实验的时候数据一般比较大,而csv文件是文本格式的数据,占用更少的存储,所以一般数据来源是csv文件,从csv文件中如何构建DataFrame呢? txt文件一般也能用这种方法。

方法一:最常用的应该就是pd.read_csv('filename.csv')了,用 sep指定数据的分割方式,默认的是','

df = pd.read_csv('./xxx.csv')

如果csv中没有表头,就要加入head参数

3. 在已有的DataFrame中,增加N列或者N行

加入我们已经有了一个DataFrame,如下图:

pandas DataFrame创建方法的方式

3.1 添加列

此时我们又有一门新的课physics,我们需要为每个人添加这门课的分数,按照Index的顺序,我们可以使用insert方法,如下:

new_columns = [92,94,89,77,87,91]
test_dict_df.insert(2,'pyhsics',new_columns)
#test_dict_df.insert(2,'pyhsics',new_columns,allow_duplicates=True)

此时,就得到了添加好的DataFrame,需要注意的是DataFrame默认不允许添加重复的列,但是在insert函数中有参数allow_duplicates=True,设置为True后,就可以添加重复的列了,列名也是重复的:

pandas DataFrame创建方法的方式

3.2 添加行

此时我们又来了一位新的同学Iric,需要在DataFrame中添加这个同学的信息,我们可以使用loc方法:

new_line = [7,'Iric',99]
test_dict_df.loc[6]= new_line

但是十分注意的是,这样实际是改的操作,如果loc[index]中的index已经存在,则新的值会覆盖之前的值。

当然也可以把这些新的数据构建为一个新的DataFrame,然后两个DataFrame拼起来。可以用append方法,不过不太会用,提供一种方法:

test_dict_df.append(pd.DataFrame([new_line],columns=['id','name','physics']))

本想一口气把CURD全写完,没想到写到这里就好累。。。其他后续新开篇章在写吧。

相关代码:(https://github.com/dataSnail/blogCode/blob/master/python_curd/python_curd_create.ipynb)(在DataFrame中删除N列或者N行)(在DataFrame中查询某N列或者某N行)(在DataFrame中修改数据)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python面向对象编程中的类和对象学习教程
Mar 30 Python
Python制作爬虫抓取美女图
Jan 20 Python
python监控进程脚本
Apr 12 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
Python基础知识点 初识Python.md
May 14 Python
24式加速你的Python(小结)
Jun 13 Python
使用Python Pandas处理亿级数据的方法
Jun 24 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
Django多数据库联用实现方法解析
Nov 12 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 #Python
Django缓存系统实现过程解析
Aug 02 #Python
tensor和numpy的互相转换的实现示例
Aug 02 #Python
Django文件存储 自己定制存储系统解析
Aug 02 #Python
使用pycharm在本地开发并实时同步到服务器
Aug 02 #Python
Django文件存储 默认存储系统解析
Aug 02 #Python
Django 迁移、操作数据库的方法
Aug 02 #Python
You might like
php表单转换textarea换行符的方法
2010/09/10 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
javascript 特殊字符串
2009/02/25 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
Python中optparse模块使用浅析
2015/01/01 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python字典对象实现原理详解
2019/07/01 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
计算机求职信
2013/12/01 职场文书
在职员工证明书
2014/09/19 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
小学生教师节广播稿
2015/08/19 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers