理解Dataframe
Dataframe是pandas中的一种数据结构,表示二维矩阵的数据表,区别于列表和字典这种一维的结构。二维具体表示为行和列,类似于sql中表的格式(或者简单理解为类似于excel中的一张表),每一列可储存不同的数据类型,比如字符型、数值型、布尔型或者object类型。
创建Dataframe
-
从字典中创建
import pandas as pd
d = {'广东':['广州','深圳'], '福建':['福州', '厦门']}
df = pd.DataFrame(d)
注:
使用第一种方法一般需要字典的值为列表,如果是
d = {'广东':23, '福建':8, '江苏':13}
df = pd.DataFrame(d)
会报错:ValueError: If using all scalar values, you must pass an index,意思是需要确定并传入索引index。
-
解决办法一可以根据想要表达的意思传入索引:
d = {'广东':23, '福建':8, '江苏':13}
df = pd.DataFrame(d, index=[0])
传入几个索引,DataFrame就会有几行,不过在这里每一行都是相同的:
d = {'广东':23, '福建':8, '江苏':13}
df = pd.DataFrame(d, index=[0,1,2])
-
解决办法二也可以使用list(d.items()):
list(d.items())的得到的结果是这样的,将字典转化为一对对键值对:
[('广东', 23), ('福建', 8), ('江苏', 13)]
传入Dataframe:
d = {'广东':23, '福建':8, '江苏':13}
df = pd.DataFrame(list(d.items()))
这样更接近我想要的结果
这时可以给Dataframe的列命名,相当于原来字典的key为一列,value为一列
d = {'广东':23, '福建':8, '江苏':13}
df = pd.DataFrame(list(d.items()), columns=['省', '地级市'])
-
解决办法三使用DataFrame.from_dict()
d = {'广东':23, '福建':8, '江苏':13}
df = pd.DataFrame.from_dict(d, orient='index')
2. 从numpy ndarray创建
df = pd.DataFrame(np.array([['广州', '厦门', '乌鲁木齐'],
['深圳', '福州', '喀什'],
['汕头', '泉州', '石河子']]),
columns=['广东', '福建', '新疆'])
np.array与dict构造DataFrame不一样,array里面每一个list长度必须一样,代表DataFrame每一行,类似于sql insert插入表,值顺序对应好列名。
3. 使用pd.read_csv等读取csv文件创建,或者pd.read_excel等