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代码实现
Jan 16 Python
python实现k-means聚类算法
Feb 23 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
对python中raw_input()和input()的用法详解
Apr 22 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
jupyter note 实现将数据保存为word
Apr 14 Python
如何用python插入独创性声明
Mar 31 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
php无限遍历目录示例
2014/02/21 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
PHP实现的二分查找算法实例分析
2017/12/19 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
汽车运用工程毕业生自荐信
2013/10/29 职场文书
茶叶生产计划书
2014/01/10 职场文书
数学系个人求职信范文
2014/01/30 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
图书馆义工感想
2015/08/07 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
pytorch 中nn.Dropout的使用说明
2021/05/20 Python
利用Python+OpenCV三步去除水印
2021/05/28 Python
python标准库ElementTree处理xml
2022/05/20 Python