pandas DataFrame简介

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)

DataFrame构造方法:

pandas.DataFrame( data, index, columns, dtype, copy)


参数说明:

data:一组数据(ndarray、series, map, lists, dict 等类型)。

index:索引值,或者可以称为行标签。

columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

dtype:数据类型。

copy:拷贝数据,默认为 False。
#!/usr/bin/python
import pandas as pd

data = [['zhangsan','18'],['lisi','20'],['wangwu','22']]

#构造dataframe结构,index行索引,columns列索引
df = pd.DataFrame(data, index=['a','b','c'], columns=['name','age'])

print(df)
print(type(df))

out:
    name age
a  zhangsan  18
b      lisi  20
c    wangwu  22
<class 'pandas.core.frame.DataFrame'>
#!/usr/bin/python
import pandas as pd

data = {'name':['zs','ls','ww'],'age':[18,20,22]}

df = pd.DataFrame(data, index=['a','b','c'])
print(df)

out:
    name  age
a   zs   18
b   ls   20
c   ww   22

DataFrame类似于一个表格,包括rows(行)和columns(列)。


Pandas 可以使用 loc 属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1,以此类推:

#!/usr/bin/python
import pandas as pd

data = {'name':['zs','ls','ww'],'age':[18,20,22]}

df = pd.DataFrame(data)

print(df)
print(df.loc[0])

out:
    name  age
0   zs   18
1   ls   20
2   ww   22
name    zs
age     18
Name: 0, dtype: object

#返回的其实就是一个pandas Series数据

#也可以返回多行
print(df.loc[[0,1]])

out:
    name  age
0   zs   18
1   ls   20
#其实返回的也是一个pandas DataFrame数据
#通过head获取前两行数据
print(df.head(2))

out:
    name  age
0   zs   18
1   ls   20

#同理,通过tail获取后两行数据
print(df.tail(2))

out:
  name  age
1   ls   20
2   ww   22

shape:返回行数、列数

print(df.shape)

out:
(3, 2)

#分别获取行数、列数
print(df.shape[0], df.shape[1])

out:
3 2

切片:

#!/usr/bin/python
import pandas as pd

data = {'name':['zs','ls','ww'],'age':[18,20,22], 'height':[170,172,175]}

df = pd.DataFrame(data)

#df[:2]  取第0行、第一行的数据
print(df[:2])

out:
  name  age  height
0   zs   18     170
1   ls   20     172

#同时,获取行的同时可以指定列
print(df[:2][['name','age']])

out:
name  age
0   zs   18
1   ls   20

DataFrame使用groupby进行分组:

#!/usr/bin/python
import pandas as pd

data = {'name':['zs','ls','ww'],'age':[18,20,22],'sex':['boy','girl','boy']}

df = pd.DataFrame(data)

print(df)

#按性别进行分组
print(df.groupby(['sex']).size())

out:
  name  age   sex
0   zs   18   boy
1   ls   20  girl
2   ww   22   boy
sex
boy     2
girl    1
dtype: int64

set_index()与reset_index():

#!/usr/bin/python
import pandas as pd

data = {'name':['zs','ls','ww'],'age':[18,20,22],'sex':['boy','girl','boy']}

df = pd.DataFrame(data)

print(df)
aaa = df.groupby(['sex']).size()
bbb = aaa.reset_index(name='小计')
ccc = bbb.set_index(pd.Series(['a','b']))

print(aaa)
print(bbb)
print(ccc)

out:
  name  age   sex
0   zs   18   boy
1   ls   20  girl
2   ww   22   boy

sex
boy     2
girl    1
dtype: int64

#reset_index
    sex  小计
0   boy   2
1  girl   1

#set_index设置索引
    sex  小计
a   boy   2
b  girl   1

参考:Pandas 数据结构 – DataFrame | 菜鸟教程

第004篇:DataFrame - 简介 - 知乎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值