【3.1.1.2】Pandas--Dataframe创建
DataFrame类型由共用相同索引的一组列组成
索引 多列数据
index_0 data_a data_1 data_w
index_1 data_b data_2 ...... data_x
index_2 data_c data_3 data_y
index_3 data_d data_4 data_z
- DataFrame是一个表格型的数据类型,每列值类型可以不同 DataFrame既有行索引、也有列索引
- DataFrame常用于表达二维数据,但可以表达多维数据
DataFrame类型可以由如下类型创建:
- 二维ndarray对象
- 由一维ndarray、列表、字典、元组或Series构成的字典
- Series类型
- 其他的DataFrame类型
生成空的pandas表
df = DataFrame(columns=('lib', 'qty1', 'qty2'))
1.1 二维ndarray对象
import pandas as pd
import numpy as np
d = pd.DataFrame(np.arange(10).reshape(2,5))
d
Out[4]:
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
注:自动索引
1.2 从一维ndarray对象字典创建
import pandas as pd
import numpy as np
t = {'one':pd.Series([1,2,3],index = ['a','b','c']),'two':pd.Series([9,8,7,6],index = ['a','b','c','d'])}
d = pd.DataFrame(dt)
print d
one two
a 1.0 9
b 2.0 8
c 3.0 7
d NaN 6
其他
cdrs_size = final_df.groupby(['cdrs'])['cdrs'].count()
cdr_dict = cdrs_size.to_dict()
cdr_df = pd.DataFrame.from_dict({'cdrs':cdr_dict.keys(),'cdr_num':cdr_dict.values()})
final_df = pd.merge(final_df, cdr_df, left_on='cdrs', right_on='cdrs', how='left')
1.3 从列表类型的字典创建
import pandas as pd
import numpy as np
dt = {'one':[1,2,3,4],'two':[9,8,7,6]}
d = pd.DataFrame(dt,index =['a','b','c','d'])
print d
one two
a 1 9
b 2 8
c 3 7
d 4 6
print d.index
Index([u'a', u'b', u'c', u'd'], dtype='object')
print d.columns
Index([u'one', u'two'], dtype='object')
print d.values
[[1 9]
[2 8]
[3 7]
[4 6]]
print d['one']
a 1
b 2
c 3
d 4
Name: one, dtype: int64
print d.ix['a']
one 1
two 9
Name: a, dtype: int64
print d['one']['a']
1
DataFrame基本操作类似Series,依据行列索引
1.5 from_dict
DataFrame.from_dict(data, orient='columns', dtype=None, columns=None)
注释:
- data:即为要转为DataFrame的字典
- orient:可选为’columns’或者’index’,默认为‘columns',如果想要将dict的key作为DataFrame的列标题,则为‘columns’;如果想要将dict的key作为DataFrame的行标题,则为‘index’。
- dype:指定的数据类型,如果不指定,则由推断得到
- columns:当以dict的key作为行标题时,列标题缺省默认为0,1,2…,colunms参数可以指定列标题的内容
例子:
data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
pd.DataFrame.from_dict(data)
col_1 col_2
0 3 a
1 2 b
2 1 c
3 0 d
Specify orient=‘index’ to create the DataFrame using dictionary keys as rows:
data = {'row_1': [3, 2, 1, 0], 'row_2': ['a', 'b', 'c', 'd']}
pd.DataFrame.from_dict(data, orient='index')
0 1 2 3
row_1 3 2 1 0
row_2 a b c d
When using the ‘index’ orientation, the column names can be specified manually:
pd.DataFrame.from_dict(data, orient='index',
columns=['A', 'B', 'C', 'D'])
A B C D
row_1 3 2 1 0
row_2 a b c d
1.6 字典dict转dataframe
df_aa = pd.DataFrame(list(aa_count.items()), columns=['aa', 'count'])
1.7 将列表(List)转换为数据框(Dataframe)
Python中将列表转换成为数据框有两种情况:第一种是两个不同列表转换成一个数据框,第二种是一个包含不同子列表的列表转换成为数据框。
第一种:两个不同列表转换成为数据框
from pandas.core.frame import DataFrame
a=[1,2,3,4]#列表a
b=[5,6,7,8]#列表b
c={"a" : a,
"b" : b}#将列表a,b转换成字典
data=DataFrame(c)#将字典转换成为数据框
print(data)
输出的结果为
a b
0 1 5
1 2 6
2 3 7
3 4 8
第二种:将包含不同子列表的列表转换为数据框
from pandas.core.frame import DataFrame
a=[[1,2,3,4],[5,6,7,8]]#包含两个不同的子列表[1,2,3,4]和[5,6,7,8]
data=DataFrame(a)#这时候是以行为标准写入的
print(data)
输出结果:
0 1 2 3
0 1 2 3 4
1 5 6 7 8
数据框的转置
data=data.T#转置之后得到想要的结果
data.rename(columns={0:'a',1:'b'},inplace=True)#注意这里0和1都不是字符串
print(data)
结果文件:
a b
0 1 5
1 2 6
2 3 7
3 4 8
参考资料
- https://blog.csdn.net/claroja/article/details/64439735?locationNum=3&fps=1
- https://blog.csdn.net/wanglingli95/article/details/78887771
- http://pandas.pydata.org/pandas-docs/version/0.21/generated/pandas.read_csv.html
- https://blog.csdn.net/ls13552912394/article/details/79349809
- http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html
- https://blog.csdn.net/qq_33711966/article/details/79902276
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn