Dataframe的多种创建方法

Dataframe的多种创建方法

"二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值、字符串、布尔值等。

Dataframe中的数据以一个或多个二维块存放,不是列表、字典或一维数组结构

# Dataframe是一个表格型数据结构,“带有标签的二维数组”
# Dataframe带有index(行标签)和columns(列标签)

import pandas as pd
data = {'name':['jack', 'tom', 'mary'],
        'age':[18, 19, 20],
        'gender':['m', 'n', 'w']}
frame = pd.DataFrame(data)
# 查看数据,数据类型是Dataframe
print(frame, type(frame))
print('----------')
# index查看行标签
print(frame.index)
print('----------')
# columns查看列标签
print(frame.columns)
print('------------')
# values查看值,数据类型是ndarray
print(frame.values)

其结果为:

   name  age gender
0  jack   18      m
1   tom   19      n
2  mary   20      w <class 'pandas.core.frame.DataFrame'>
----------
RangeIndex(start=0, stop=3, step=1)
----------
Index(['name', 'age', 'gender'], dtype='object')
------------
[['jack' 18 'm']
 ['tom' 19 'n']
 ['mary' 20 'w']]

Dataframe创建方法一:由数组list组成的字典

# Dataframe创建方法一:由数组list组成的字典
# 创建方法:pandas.Dataframe()

import numpy as np
data1 = {'a':[1, 2, 3],
         'b':[2, 3, 4],
         'c':[3, 4, 5]}
data2 = {'one':np.random.rand(3),
         'two':np.random.rand(3)}
d1 = pd.DataFrame(data1)
d2 = pd.DataFrame(data2)
print(d1)
print(d2)
# 由数组组成的字典,创建Dataframe是,columns为字典key,index为默认数字标签
# 字典的值得长度必须保持一致

运行结果为:

   a  b  c
0  1  2  3
1  2  3  4
2  3  4  5
        one       two
0  0.375900  0.123650
1  0.767906  0.162349
2  0.247377  0.725446

其中pd.Dataframe中index和columns两个参数的用法:

d3 = pd.DataFrame(data1, index=['a', 'b', 'c'])
print(d3)
# index参数:重新定义index,格式为list,长度必须保持一致
-----------------------------------

其输出结果为:
   a  b  c
a  1  2  3
b  2  3  4
c  3  4  5

d4 = pd.DataFrame(data1, columns=['c', 'a', 'b', 'd'])
d5 = pd.DataFrame(data1, columns=['b', 'a'])
print(d4)
print(d5)
# columns参数:可以重新指定列的顺序,格式为list,如果现有数据中没有该列(比如'd'),则产生NaN值)
# column重新指定时,指定列的数量可以少于原数据
-------------------------------------------------
运行结果为:
   c  a  b    d
0  3  1  2  NaN
1  4  2  3  NaN
2  5  3  4  NaN
   b  a
0  2  1
1  3  2
2  4  3

Dataframe创建方法二:由Series组成的字典

# Dataframe创建方法二:由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)
print('-----------------------------------------')
d1 = pd.DataFrame(data1)
d2 = pd.DataFrame(data2)
print(d1)
print(d2)
# 由Series组成的字典创建Dataframe,字典key为columns,Series的标签为index(如果Series没有指定标签,则默认数字标签)
# Series可以长度不一样,生成的Dataframe会出现NaN值(空值)
==================
其运行结果如下:

{'one': 0    0.032825
1    0.532207
dtype: float64, 'two': 0    0.507928
1    0.162757
2    0.305730
dtype: float64}
{'one': a    0.043109
b    0.390991
dtype: float64, 'two': a    0.141395
b    0.794620
c    0.452888
dtype: float64}
-----------------------------------------
        one       two
0  0.032825  0.507928
1  0.532207  0.162757
2       NaN  0.305730
        one       two
a  0.043109  0.141395
b  0.390991  0.794620
c       NaN  0.452888

Dataframe创建方法三:通过二维数组直接创建

# Dataframe创建方法三:通过二维数组直接创建

ar = np.random.rand(9).reshape(3, 3)
print(ar)
print('---------------------------')
d1 = pd.DataFrame(ar)
d2 = pd.DataFrame(ar, index=['a', 'b', 'c'], columns=['one', 'two', 'three'])
print(d1)
print(d2)
# 通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不指定index和columns,两者均返回默认数字格式
# index和columns指定长度与原数组应一致
==================
其输出结果为:

[[0.0174177  0.80157922 0.85656898]
 [0.89648197 0.29269994 0.802793  ]
 [0.42646779 0.88849482 0.76086702]]
          0         1         2
0  0.017418  0.801579  0.856569
1  0.896482  0.292700  0.802793
2  0.426468  0.888495  0.760867
        one       two     three
a  0.017418  0.801579  0.856569
b  0.896482  0.292700  0.802793
c  0.426468  0.888495  0.760867

Dataframe创建方法四:由字典组成的列表

# Dataframe创建方法四:由字典组成的列表

data = [{'one':1, 'two':2}, {'one':5, 'two':10, 'three':20}]
d1 = pd.DataFrame(data)
d2 = pd.DataFrame(data, index=['a', 'b'])
d3 = pd.DataFrame(data, columns=['one', 'two', 'three']) # 重新排序
d4 = pd.DataFrame(data, columns=['one', 'two'])
print(d1)
print(d2)
print(d3)
print(d4)
# 由字典组成的列表创建Dataframe,字典key为columns,index不能指定为默认数组标签
# columns和index参数分别重新指定相应列及行标签
-------------------------------------------
其运行结果为:
   one  three  two
0    1    NaN    2
1    5   20.0   10
   one  three  two
a    1    NaN    2
b    5   20.0   10
   one  two  three
0    1    2    NaN
1    5   10   20.0
   one  two
0    1    2
1    5   10
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值