七:python-数据集:数据框DataFrame

DataFrame,中文叫数据框,是pandas模块最常用的数据类型,是一个二维的矩阵数据表。DataFrame,就像是一个表格,可以非常便捷地存放数据。

DataFrame,它由3部分组成:行索引(index),列索引(columns),值。通过index和columns,可以定位到一个值,能快速进行数据的筛选和定位。列和列之间的数据类型可以不同。

可以认为DataFrame是“具有相同index的Series的集合”,和Series类似,DataFrame的行索引index是可以选择性定义的。如果没有定义index,index就会默认从0开始生成。

3.1 导入pandas

import pandas as pd

3.2 创建数据框

df=pd.DataFrame(数据列表或数据字典,index=索引列表)

可以用字典生成数据框或者用列表生成数据框,二者的区别如下:

  • 字典生成:字典的key是列名,值是一列数据的值
  • 列表生成:列表是一行数据

以下是两个示例:

#用字典生成dataframe
import pandas as pd
data={'rank':[1,2,3,4],'GDP':[80855,77388,68024,47251]}#字典的key可以是''也可以是""
city=["GD","JS","SD","ZJ"]
df=pd.DataFrame(data,index=city)
print(df)
#输出格式
    rank    GDP
GD     1  80855
JS     2  77388
SD     3  68024
ZJ     4  47251


print(df.dtypes)#返回数据类型,因为是多个数据,所以要用复数
#输出
rank    int64
GDP     int64
dtype: object
print(df.values)#返回每一列数据的值
#输出:数据框的值组成的二维数组
[[    1 80855]
 [    2 77388]
 [    3 68024]
 [    4 47251]]

print(df.index)#返回索引
#输出
Index(['GD', 'JS', 'SD', 'ZJ'], dtype='object')
#用列表生成dataframe
import pandas as pd
data=[['May',689],['Tony',659],['Kevin',635]]
rank=[1,2,3]

result=pd.DataFrame(data,index=rank)
print(result)
#输出,如果是列表没有列名
       0    1
1    May  689
2   Tony  659
3  Kevin  635

result=pd.DataFrame(data,index=rank,columns=["name","score"])#设置列名
print(result)
#输出,
   name  score
1    May    689
2   Tony    659
3  Kevin    635

3.3设置或修改索引

#用字典生成dataframe
import pandas as pd
data={'rank':[1,2,3,4],'GDP':[80855,77388,68024,47251]}#字典的key可以是''也可以是""
city=["GD","JS","SD","ZJ"]
df=pd.DataFrame(data,index=city)

name_new=['广州','JS','山东','ZJ']
df.index=name_new
print(df)
#输出
   rank    GDP
广州     1  80855
JS     2  77388
山东     3  68024
ZJ     4  47251

3.4选择数据

一般在数据分析时,取列数据最为常用,如:选取四个省份的排名数据

取单独一列 dataframe['列名']

取多列需要先把要取的列名组成列表,再用dataframe[list]取数

list=['列名1','列名2','列名3']

dataframe[list]


#取列数据
df['rank']
#输出
广州    1
JS    2
山东    3
ZJ    4
Name: rank, dtype: int64
#取两列及以上数据,需要先把列名组成列表,再用数据框[列名列表]取数
df[['GDP','rank']]
#输出
      GDP  rank
广州  80855     1
JS  77388     2
山东  68024     3
ZJ  47251     4

取行数据 dataframe.iloc[第几行]

#取行数据,取第一行
df.iloc[0]
#输出
rank        1
GDP     80855
Name: 广州, dtype: int64
#取第1、2行数据
df.iloc[0:2]
#输出
    rank    GDP
广州     1  80855
JS     2  77388

取特定索引数据 dataframe.loc['索引名']

#根据索引取广州的数据
df.loc['广州']
#输出
rank        1
GDP     80855
Name: 广州, dtype: int64
#根据索引取广州和山东的数据,需要先把索引组成列表,再用数据框[索引列表]取数
df.loc[['广州','山东']]
#输出
    rank    GDP
广州     1  80855
山东     3  68024

取行*列索引

print(df)
#输出
    rank    GDP
广州     1  80855
JS     2  77388
山东     3  68024
ZJ     4  47251

df.iloc[0,1]#输出第1行第二列数据
#输出: 80855

df.iloc[[0,2],[0,1]]#输出第1、3行第1、2列数据
#数据
    rank    GDP
广州     1  80855
山东     3  68024

布尔索引

注意:这里组合条件不能用and和or,而是& 和 | 

print(df)
#输出:
   rank    GDP
广州     1  80855
JS     2  77388
山东     3  68024
ZJ     4  47251

df[df['rank']<=3]#单一条件
#输出:
   rank    GDP
广州     1  80855
JS     2  77388
山东     3  68024

df[(df['rank']<=3) & (df['GDP']>=70000)] #组合条件:且&
#输出:
    rank    GDP
广州     1  80855
JS     2  77388


df[(df['rank']<=2) | (df['GDP']<50000)]#组合条件:或|
    rank    GDP
广州     1  80855
JS     2  77388
ZJ     4  47251

总结不同取数方式

取列dataframe['列名']
取多列

list=['列名1','列名2','列名3']

dataframe[list]

也可以直接写

dataframe[['列名1','列名2','列名3']]

取行dataframe.iloc[第几行]
取多行dataframe.iloc[第几行:第几行]
取索引dataframe.loc['索引名']
取多个索引

list=['索引1','索引2','索引3']

dataframe[list]

取某个特定单元格的值(行*列)dataframe.iloc[第几行,第几列]
取多个特定单元格的值(行*列)dataframe.iloc[[第几行,第几行],[第几列,第几列]]
布尔索引,单一条件

条件=dataframe['列名']>=3

dataframe[条件]

也可以直接写:dataframe[dataframe['列名']>=3]

布尔索引,且dataframe[(dataframe['列名']>=3) & (dataframe['列名2']=='广东')]
布尔索引,或dataframe[(dataframe['列名']>=3) | (dataframe['列名2']=='广东')]

*行数和列数都是从0开始算

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值