微信号:shushuojun

介绍:数据分析师之家.旨在为数据人提供一个学习、分享、互帮互助的家园.

统计师的Python日记:第四天的补充

2016-03-14 21:10 数据分析师之家→


【第4天:欢迎光临Pandas】


第四天学习了Pandas,感受了Pandas数据的DataFrame数据格式的魅力:




看起来就像excel一样清爽!


但是后来我遇到了两个问题:


1)之前只学习了用字典来生成,列表可以生成吗?


2)字典生成也存在问题:想把{'A': 'a', 'B': 'b'}变成DataFrame就不行:


import pandas as pd


>>> df = pd.DataFrame({'A': 'a', 'B': 'b'})


Traceback (most recent call last):

  File "<pyshell#5>", line 1, in <module>

    df = pd.DataFrame({'A': 'a', 'B': 'b'})

  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 226, in __init__

    mgr = self._init_dict(data, index, columns, dtype=dtype)

  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 363, in _init_dict

    dtype=dtype)

  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 5158, in _arrays_to_mgr

    index = extract_index(arrays)

  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 5197, in extract_index

    raise ValueError('If using all scalar values, you must pass'

ValueError: If using all scalar values, you must pass an index



对这两个问题,查了资料,得到解决,现记录在此:


1)列表生成DataFrame:


直接DataFrame就可以,和字典一样



但是问题来了:


“索引名和变量名能改一下吗?”


自定义索引名,就用第四天里学的index=[ ]即可:



那么想自定义变量名呢?


哎这个,您啊,可以关注第五天的日记,我继续分享~


2)字典生成DataFrame的问题


import pandas as pd


>>> df = pd.DataFrame({'A': 'a', 'B': 'b'})


不成功,得到一堆错误提示


第四天学的就是用字典来生成DataFrame,怎么到这里不成功了?


您看看第四天的例子中的字典是什么样的:


>>> pop

{'city': ['Chongqin', 'Shanghai', 'Beijing', 'Chengdu', 'Tianjin', 'Guangzhou', 'Baoding', 'Harbin', 'Suzhou', 'Shenzhen'], 'pop': [2884.6, 2301.9, 1961.2, 1404.8, 1293.8, 1270.1, 1119.4, 1063.6, 1046.6, 1035.8]}


这个例子中,我传入的字典是pop,它的形式是:


{ ‘city’:['chongqin', 'shanghai'], ‘pop': [2884.6, 2301.9] }


而出错的那个是这样的:


{'A': 'a', 'B': 'b'}


区别在哪呢?该不会是[ ]的问题吧——是的。


所以,将字典生成DataFrame,您可以用{'A':[ 'a'], 'B': ['b']},当然也不一定非要这样,所以三种方法是可以成功的:


第一种:{'A':['a'], 'B': ['b']}

>>> df = pd.DataFrame({'A': ['a'], 'B': ['b']})

>>> df

   A  B

0  a  b


第二种:传入索引index

>>> df = pd.DataFrame({'A': 'a', 'B': 'b'}, index=[0])

>>> df

   A  B

0  a  b


第三种:DataFrame([dict])

>>> df = pd.DataFrame([{'A': 'a', 'B': 'b'}])

>>> df

   A  B

0  a  b


欢迎继续关注【统计师的Python日记】系列


【第1天:谁来给我讲讲Python?】


【第2天:再接着介绍一下Python呗】


【第3天:Numpy你好】


【第4天:欢迎光临Pandas】



1. 关于数据分析的提问求助直接在微信后台留言。


2. 转载、投稿、免费发布招聘、合作,请加数说君个人微信AnselT,或Email:jiayounet@163.com。


数说工作室

数据分析师之家 | 金融 生物 零售 互联网

微信ID:shushuojun


长按二维码关注数说工作室

 
数说工作室 更多文章 导语:SAS正则表达式,统计师入门文本分析的捷径 讨论 | 数据分析的价值 日本 | 医疗大数据值得关注的3个方向 统计师的Python日记【第6天:数据合并】 统计师的Python日记【第5天:Pandas,露两手】
猜您喜欢 Swift 的强大之处 【跟着妹子学编程】第十二讲,PHP教程 C#执行异步操作的几种方式比较和总结 面试心得与总结 Android桌面系统Remix OS