编译:老齐
与本文相关的图书推荐:《数据准备和特征工程》
![80e0324cd33e4174f218f0f4c297661d.png](https://img-blog.csdnimg.cn/img_convert/80e0324cd33e4174f218f0f4c297661d.png)
在数据科学项目中,通常用Pandas的read_csv
或者read_excel
从相应文件中读入数据,此外,对于数据量不大的时候,可能还有下面的情形出现:
import pandas as pddata = {‘key1’: values, ‘key2’:values, ‘key3’:values, …, ‘keyN’:values}df = pd.DataFrame(data)
这里是将一个Python中的字典data
转化为了Pandas中的DataFrame对象,这样字典就作为了数据源。
上面的操作并不复杂,当然,这里演示的字典和对DataFrame的要求都是简单的情形。就一般而言,如果遇到了简单的数据源,可知通过下面的三步实施:
确定数据
要留言数据的格式,从而确定是否能够用于本文所说的过程。比如下面的数据:
我们需要做的是把这个表格样式的数据,用Python的字典表示——数据量小,不费事。
创建字典
把上面的表格,改写为:
data = {'Rank':[1, 2, 3, 4, 5], 'Language': ['Python', 'Java', 'Javascript', 'C#', 'PHP'], 'Share':[29.88, 19.05, 8.17, 7.3, 6.15], 'Trend':[4.1, -1.8, 0.1, -0.1, -1.0]}print(data)
转化为DataFrame
然后,就开始转化:
df = pd.DataFrame(data)display(df)
三步,这是基本操作,比较简单。但是,有时候你遇到的情况可能比这复杂一些。
比如,如果你要将Python中的OrderedDict对象转化为DataFrame:
from collections import OrderedDictdata= OrderedDict([('Trend', [4.1, -1.8, 0.1, -0.1, -1.0]), ('Rank',[1, 2, 3, 4, 5]), ('Language', ['Python', 'Java', 'Javascript', 'C#', 'PHP']), ('Share', [29.88, 19.05, 8.17, 7.3, 6.15])])display(data)
![58ffbb6ac7b232b15e7abfb2f43309f8.png](https://img-blog.csdnimg.cn/img_convert/58ffbb6ac7b232b15e7abfb2f43309f8.png)
到现在为止,我们使用的就是pd.DataFrame(data)
实现了转化。其实,还有一些参数,如果使用了,能够让转化的结果更多样。
例如,在创建DataFrame对象时,指定行索引,而不是像前面那样使用默认的数字。
rom collections import OrderedDictdata = OrderedDict([('Trend', [4.1, -1.8, 0.1, -0.1, -1.0]), ('Rank',[1, 2, 3, 4, 5]), ('Language', ['Python', 'Java', 'Javascript', 'C#', 'PHP']), ('Share', [29.88, 19.05, 8.17, 7.3, 6.15])])df = pd.DataFrame(data, index = ['A', 'B', 'C', 'D', 'E'])display(df)
![82b860b9b7d897bb3a3c04ecaf7bf801.png](https://img-blog.csdnimg.cn/img_convert/82b860b9b7d897bb3a3c04ecaf7bf801.png)
此外,也可以使用columns
这个参数,来指定列索引的名称。
或许,你不需要字典中的所有数据,那就用columns
参数进行筛选吧。
from collections import OrderedDictdata = OrderedDict([('Trend', [4.1, -1.8, 0.1, -0.1, -1.0]), ('Rank',[1, 2, 3, 4, 5]), ('Language', ['Python', 'Java', 'Javascript', 'C#', 'PHP']), ('Share', [29.88, 19.05, 8.17, 7.3, 6.15])])df = pd.DataFrame(data, index = ['A', 'B', 'C', 'D', 'E'], columns=['Language', 'Share'])display(df)
![1cc1bc193bf326d81b9b4c9aa0a73f40.png](https://img-blog.csdnimg.cn/img_convert/1cc1bc193bf326d81b9b4c9aa0a73f40.png)
在上述的示例中,都是以字典的键作为DataFrame中的特征(列)名称,下面的示例演示一种旋转的方式,即键作为行索引。
df = pd.DataFrame.from_dict(data, orient='index')df.head()
![a4bcd785b6d2a8583b9875379ff57d48.png](https://img-blog.csdnimg.cn/img_convert/a4bcd785b6d2a8583b9875379ff57d48.png)
从上面的输出结果中可以看到,这时候的列索引,都采用了默认的数字,也可以指定有意义的名称。
df = pd.DataFrame.from_dict(data, orient='index', columns=['A', 'B', 'C', 'D', 'F'])df.head()
![5953b8425c4fc9c18a834a662801ecf3.png](https://img-blog.csdnimg.cn/img_convert/5953b8425c4fc9c18a834a662801ecf3.png)
当DataFrame对象创建了之后,可以把它保存为csv文件。
df.to_csv('top5_prog_lang.csv')
很多时候是从CSV等格式的文件中读取数据,此外,也有可能遇到上面各个示例的情景,需要将字典转化为DataFrame。
参考资料:https://www.marsja.se/how-to-convert-a-python-dictionary-to-a-pandas-dataframe/
阅读更多精彩文章
![fbbfc47e4f92e15e31a08badcb543b8e.png](https://img-blog.csdnimg.cn/img_convert/fbbfc47e4f92e15e31a08badcb543b8e.png)
关于「黑板派」
每一个教师都是一个教育自媒体。愿“社员”能做的事的做事,能发声的发声。有一分热,就发一分光,就令萤火一般,也可以在黑板前发一点光,不必等候炬火。
派森社 一群人走的更远,期待您的加入!
Python教师社群,关注人工智能教育。于2019首届Python教学研讨会期间发起,“社员”来自全国32个省(自治区)逾1900人。定期举办出版社/作者赠书、讲座直播/线上分享、硬件漂流、线下培训、论坛研讨和专项赛事等多彩活动。合作《爱上机器人》杂志社的Python专栏和联合电子工业、人民邮电和清华大学等出版社的“燎原”丛书计划向有意发表文章和编写图书的“社员”约稿和提供支持!
长按登记幸运社员赠书
加入星球派与大咖互动
![75c5b5d021bceea47dd26ebe18bd1f9c.png](https://img-blog.csdnimg.cn/img_convert/75c5b5d021bceea47dd26ebe18bd1f9c.png)
![025e18b7c8bae5ac57ad85711fabcf93.png](https://img-blog.csdnimg.cn/img_convert/025e18b7c8bae5ac57ad85711fabcf93.png)
收藏讲桌派直播周周见
关注公众号早读好文章
![02f3a0356379aba3653ab7f09d0daa6c.png](https://img-blog.csdnimg.cn/img_convert/02f3a0356379aba3653ab7f09d0daa6c.png)
![a36b47192ad6bffcc1872ffadb41a217.png](https://img-blog.csdnimg.cn/img_convert/a36b47192ad6bffcc1872ffadb41a217.png)
点击“在看”留下你的想法
![a5f40fd89aa21a29f64651128abdc5ab.png](https://img-blog.csdnimg.cn/img_convert/a5f40fd89aa21a29f64651128abdc5ab.png)