DataFrame简介

复制代码
  • 1
  • 2
# Dataframe是一个表格型的数据结构,“带有标签的二维数组”。 # Dataframe带有index(行标签)和columns(列标签)
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
#DateFrame简介 import numpy as np import pandas as pd date = {'a':[1,2,3,4],'b':[4,5,6,7],'c':[2,3,4,5]} df = pd.DataFrame(date) print(df) print(df.index) print(df.columns) print(df.values) # .index查看行标签 # .columns查看列标签 # .values查看值,数据类型为ndarray
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
a b c 0 1 4 2 1 2 5 3 2 3 6 4 3 4 7 5 RangeIndex(start=0, stop=4, step=1) Index(['a', 'b', 'c'], dtype='object') [[1 4 2] [2 5 3] [3 6 4] [4 7 5]]
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
# DateFrame的五种创建方法 #一:字典的值为列表或数组 data1 = {'a':[1,2,3], 'b':[3,4,5], 'c':[5,6,7]} data2 = {'one':np.random.rand(3), 'two':np.random.rand(3)} # 这里如果尝试 'two':np.random.rand(4) 会报错 df1 = pd.DataFrame(data1) df2 = pd.DataFrame(data2) print(df1) print(df2) # #columns为字典key,index为默认数字标签 # 由数组/list组成的字典 创建Dataframe, # 字典的值的长度必须保持一致! df3 = pd.DataFrame(data1,columns=['c','b','a','d']) df4 = pd.DataFrame(data1,columns=['b','c']) print(df3) print(df4) #clomuns参数可以重新调整列的位置,没有的用NaN补充,少了就不要了 df5 = pd.DataFrame(data2,index=['A','B','C']) print(df5) #index参数重新设置行名,长度必须和原列长度相等 # df5 = pd.DataFrame(data2,index=['A','B','C','D'])这种写法会报错
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
a b c 0 1 3 5 1 2 4 6 2 3 5 7 one two 0 0.882151 0.095418 1 0.792190 0.753419 2 0.314997 0.841665 c b a d 0 5 3 1 NaN 1 6 4 2 NaN 2 7 5 3 NaN b c 0 3 5 1 4 6 2 5 7 one two A 0.882151 0.095418 B 0.792190 0.753419 C 0.314997 0.841665
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# 二:由Series组成的字典 dic = {'a':pd.Series(np.random.rand(3),index=list('ABC')),'b':pd.Series(np.random.rand(4),index=list('ABCD'))} df = pd.DataFrame(dic) print(df) # 由Seris组成的字典 创建Dataframe,columns为字典key,index为Series的标签(如果Series没有指定标签,则是默认数字标签) # 两个Series可以长度不一样,生成的Dataframe会出现NaN值,但每个index的长度必须匹配,,注意:这一特点与值为列表的情况不同
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
a b A 0.030423 0.549796 B 0.693748 0.609371 C 0.568017 0.623722 D NaN 0.806268
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
#三:Dataframe 创建方法三:通过二维数组直接创建 nd = np.random.rand(12).reshape(3,4) df = pd.DataFrame(nd,index=list('abc'),columns=list('ABCD')) print(df) # 通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不指定index和columns,两者均返回默认数字格式 # index和colunms指定长度与原数组保持一致
复制代码
  • 1
  • 2
  • 3
  • 4
A B C D a 0.794797 0.508300 0.204213 0.191891 b 0.539616 0.693174 0.954507 0.420008 c 0.909683 0.326935 0.257751 0.582809
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
#四:由字典组成的列表创建 data = [{'one': 1, 'two': 2}, {'one': 5, 'two': 10, 'three': 20}] df1 = pd.DataFrame(data) df2 = pd.DataFrame(data, index = ['a','b']) #index的长度匹配 df3 = pd.DataFrame(data, columns = ['one','two']) print(df1) print(df2) print(df3) # 由字典组成的列表创建Dataframe,columns为字典的key,index不做指定则为默认数组标签 # colunms和index参数分别重新指定相应列及行标签
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
one two three 0 1 2 NaN 1 5 10 20.0 one two three a 1 2 NaN b 5 10 20.0 one two 0 1 2 1 5 10
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
# 五:由字典组成的字典创建 data = {'Jack':{'math':90,'english':89,'art':78}, 'Marry':{'math':82,'english':95,'art':92}, 'Tom':{'math':78,'english':67}} df1 = pd.DataFrame(data) print(df1) # 由字典组成的字典创建Dataframe,columns为字典的key,index为子字典的key df2 = pd.DataFrame(data, columns = ['Jack','Tom','Bob']) #列可多可少 df3 = pd.DataFrame(data, index = ['art','math','english','d']) #行也可多可少 print(df2) print(df3) # columns参数可以增加和减少现有列,如出现新的列,值为NaN # index在这里和之前不同,并不能改变原有index,如果指向新的标签,值为NaN (非常重要!)
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
Jack Marry Tom math 90 82 78.0 english 89 95 67.0 art 78 92 NaN Jack Tom Bob math 90 78.0 NaN english 89 67.0 NaN art 78 NaN NaN Jack Marry Tom art 78.0 92.0 NaN math 90.0 82.0 78.0 english 89.0 95.0 67.0 d NaN NaN NaN
复制代码
    posted @   Franciszw  阅读(2458)  评论(0编辑  收藏  举报
    点击右上角即可分享
    微信分享提示
    评论
    收藏
    关注
    推荐
    深色
    回顶
    展开