第四天学习了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 '
', line 1, in 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日记】系列
联系客服