Python数据分析数据可视化--看一眼就能学会的的Pandas数据结构DataFrame(上)

前面两篇博客写了一维数组Series,接下来再来写写二维数组DataFrame,DataFrame是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值、字符串、布尔值等,它的数据以一个或多个二维块存放,不是列表、字典或一维数组结构。
(1)Dataframe数据结构
Dataframe数据结构是一个表格型的数据结构,是带有标签的二维数组,带有行标签(index)和列标签(columns),通过.index查看行标签,.columns查看列标签,.values 查看值,数据类型为ndarrary

data = {'name':['Jack','Tom','Mary'],
        'age':[18,19,20],
       'gender':['m','m','w']}
frame = pd.DataFrame(data)
print(frame)  
print(type(frame))
print(frame.index,'\n该数据类型为:',type(frame.index))
print(frame.columns,'\n该数据类型为:',type(frame.columns))
print(frame.values,'\n该数据类型为:',type(frame.values))

输出结果:
在这里插入图片描述
在后面做数据分析的时候我们大部分用的是DataFrame,它和excel表格数据是很相像的
(2)创建方法
Dataframe 的创建方法非常多,首先来看由数组/list组成的字典创建

data1 = {'a':[1,2,3],
        'b':[3,4,5],
        'c':[5,6,7]}#生成字典
data2 = {'one':np.random.rand(3),
        'two':np.random.rand(3)}  
print(data1)
print(data2)
df1 = pd.DataFrame(data1)#创建为Dataframe数据
df2 = pd.DataFrame(data2)
print(df1)
print(df2)

输出结果:
在这里插入图片描述
这里我们需要注意,由数组/list组成的字典创建Dataframe,column是为字典key,index为默认数字标签,字典的值的长度一定要保持一致!
我们当然可以改变列标签columns的值

df1 = pd.DataFrame(data1, columns = ['b','c','a','d'])
print(df1)
df1 = pd.DataFrame(data1, columns = ['b','c'])
print(df1)

输出结果:
在这里插入图片描述
重新指定columns的时候,可以指定列的顺序,列的数量可以多于或少于原数据,多的时候体现为空值NaN
当然了我们也可以更改行标签index

df2 = pd.DataFrame(data2, index = ['f1','f2','f3'])  # 这里如果尝试  index = ['f1','f2','f3','f4'] 会怎么样?
print(df2)

输出结果:
在这里插入图片描述
更改行标签index 的时候需要注意新定义的index数量必须和原index数量保持一致

第二种方法是由Series组成的字典创建,创建方法其实大同小异啦

data1 = {'one':pd.Series(np.random.rand(2)),
        'two':pd.Series(np.random.rand(3))}  # 没有设置index的Series
data2 = {'one':pd.Series(np.random.rand(2), index = ['a','b']),
        'two':pd.Series(np.random.rand(3),index = ['a','b','c'])}  # 设置了index的Series
print(data1)
print(data2)
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
print(df1)
print(df2)

输出结果:
在这里插入图片描述
由Series组成字典,创建Dataframe,columns为字典key,index为Series的标签,Series的长度可以不一样,生成的DataFrame会出现NaN

第三种创建方法是由二维数组直接创建,这种方法我们比较常用,因为我们读取的excel数据就是二维数组的形式

ar = np.random.rand(9).reshape(3,3)
print(ar)
df1 = pd.DataFrame(ar)
df2 = pd.DataFrame(ar, index = ['a', 'b', 'c'], columns = ['one','two','three'])  # 可以尝试一下index或columns长度不等于已有数组的情况
print(df1)
print(df2)

输出结果:
在这里插入图片描述
通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不指定index和columns,两者则均返回默认的数字形式,要注意index和columns的指定长度需要和原来数组保持一致

第四种创建方法呢是由字典组成的列表来创建

data = [{'one': 1, 'two': 2}, {'one': 5, 'two': 10, 'three': 20}]
print(data)
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data, index = ['a','b'])
df3 = pd.DataFrame(data, columns = ['one','two'])
print(df1)
print(df2)
print(df3)

输出结果:
在这里插入图片描述
最后一种创建方法就稍微有一丢丢复杂,由字典组成的字典创建

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)

在这里插入图片描述
今天就到这里吧,不想继续写了

我是一位211高校在读的本科生,是个耿直GIRL,对数据分析比较感兴趣,去年拿到了数学建模国家一等奖,今年参加了美赛还没结果,参加比赛选的题型都是大数据型,用过Excel,Spss,Lingo,MATLAB做数据分析,现在觉得Python比较高效,做数据可视化也非常方便,每天都在坚持学习,对Python数据分析和数据可视化有兴趣的可以关注我哦,每天都会更新的,跟我一起进步呀

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值