七:python

您所在的位置:网站首页 dataframe创建数据框 七:python

七:python

2023-10-04 17:38| 来源: 网络整理| 查看: 265

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) & (dataframe['列名2']=='广东')]布尔索引,或dataframe[(dataframe['列名']>=3) | (dataframe['列名2']=='广东')]

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3