咨询热线:13680849621 联系人:赵冰 地址:广西南宁市西乡塘区科园大道
python pandas DataFrame: creation
来源:ag环亚集团 发布时间:2019-11-25 点击量:212
注:安装pandas自行完成:pip install pandas!
一、Create(增加、创建DataFrame)
在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_dicttest_dict_df = pd.DataFrame(test_dict)#[2].字典型赋值test_dict_df = pd.DataFrame(data=test_dict)
那么,我们就得到了一个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,如下图:
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后,就可以添加重复的列了,列名也是重复的:
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中修改数据)
相关产品
-
同时,安卓头牌三星,也开启了自家旗舰的新春狂欢盛典。包括Galaxy Note 8、S8/S8+在本次三星年货节中拥有不错的优惠,均是近期好价。同时京东还为购买三星手机的消费者准备了12期免息白条以及价值249元的官方无线快充充电器:手机点此 | PC点此
-
而正像他说的那样,当我在希腊第一次看到新Cayenne的时候,虽然我手里拿着官方的新车简介,虽然心里知道新车肯定变了,虽然去之前还看了早前同事在全球发布时写的新车实拍,但我依然不能一一指出它变在哪里。
-
这几起袭击事件均发生在5日早八点到九点之间。据叙利亚官方的萨那新闻社报道,塔尔图斯市郊发生的爆炸案造成30名平民死亡、45人受伤。
-
从《中国远征军》、《和平年代》到《历史的天空》等军旅题材电视剧,张丰毅似乎与硬汉军人结下不解之缘。当记者提到演多了“硬汉”会不会有审美疲劳时,张丰毅马上否认,“硬汉角色演得还不够,怎么会厌倦?我打小就希望自己成为一个‘硬汉’,肌肉发达又很有脑子的那种男人。我一直很讨厌脂粉气、娘娘腔的男人。再说了,我这个年龄和形象气质估计也很难转型了吧,更重要的是,观众绝对不会接受我来演‘奶油小生’的。”
-
祸不单行,就在两个月前,权健公司还因在山东涉嫌传销,被当地警方查处。现在看来,这家或将获牌的直销企业,在短短两月内已蒙两次污点。在业界传言中,权健获牌已是板上钉钉,但相关人员接连两次被公安抓捕,这牌照又是否能拿得稳当?
-
墨尔本凭借医疗卫生、教育和基础设施等项目上的传统优势,以97.5分成功卫冕,奥地利首都维也纳以0.1分之差屈居第二,加拿大的温哥华和多伦多分列第三和第四。
-
银联公务卡是面向财政预算单位人员发行,主要用于日常公务支出和财务报销的银联信用卡产品。目前,中国银联联合商业银行已建立起了与国库集中支付系统对接的银联公务卡信息查询平台,帮助预算单位和财政部门及时掌握公务支出明细,对违规支出做出快速处理。鉴于银联公务卡兼具个人消费用途,该平台仅支持公务支出信息查询,保护持卡人个人消费隐私。
-
大陆影视圈从“台湾经验”汲取养分,学习台湾的制作人、实力派演员和技术团队的经验,如今已非吴下阿蒙,而且还勇砸巨资向海外买版权自制陆版节目,甚至不惜巨资邀请国际巨星莎拉布莱曼、艾薇儿、鸟叔PSY等人登台;汤姆克鲁斯、威尔史密斯、小罗伯特唐尼等巨星先后造访,影帝安卓布洛迪、克里斯汀贝尔等人也到大陆拍电影,大陆国际化发展的速度已是台湾远远不及。
热点资讯
- 微信语音也能被“克隆”!女儿验证父亲语音还是被骗2019-11-25
- 美加征关税是否影响到中国机器人生产?发改委回应2019-11-25
- 淘汰鸡肋:微软公布Win8/WP8软件商店关闭时间表2019-11-25
- pythonpandasDataFrame:creation2019-11-25
- 通产丽星连续六涨停重组方案遭深交所问询2019-11-25
- 家养十分不错的植物丝兰2019-11-25
- 基于Docker搭建Jumpserver堡垒机操作实践2019-11-25
- 芦荟怎么养芦荟的养殖方法2019-11-25