python pandas dataframe,pandas dataframe添加数据
DataFrame是熊猫中最常用的对象,类似于excel中的表格。读取数据后,数据将保存在DataFrame结构的内存中,但此时不能直接开始统计分析。你必须使用DataFrame的属性和方法来了解基本的数据条件(如分布、大小等。)的数据,然后根据数据条件进行具体的统计分析。
DataFrame是一个带有标签的二维数组,每个标签对应每一列的列名,DataFrame中一列的数据是系列。也就是说,Series是一个带有标签的一维数组。
熊猫数据帧的一般操作1。数据框值、索引、列和dtypesize、ndim、shape、T2的常规属性。在数据帧中添加和删除数据查看2.1数据帧的基本视图访问单列数据访问单列多行数据访问多行数据访问头、尾是多行数据的loc 2.2数据帧。访问iloc单列切片loc、iloc多列切片loc、iloc外观切片loc、iloc条件切片摘要2.3以及数据2.4数据帧中的删除数据2.5数据帧。
显示数据框的常规属性值、索引、列和数据类型。
DataFrame的基本属性包括值、索引、列和dtype,可以获取元素、索引、列名和类型。
这里以sklearn的波士顿房价数据集为例。Ndarry数据可以与DataFrame数据交换,其中DataFrame数据是基于ndarry的波士顿数据构建的。
获取importpandasaspdfromsklein . datasetsimportload _ Boston=load _ Boston()data=Boston[ data ]#的数据,数据的数据类型为ndarryfeature _ names=Boston[ feature _ names ]#。获取数据的特征名,作为data frame house _ price=PD . data frata的列名。
Print(house_price.values) #打印房价列表中的所有值
Print(house_price.columns) #输出房价列表中的列名
Print(house_price.dtypes) # data住宅价格表的数据类型
Size,ndim,shape,tprint(house_price.size)输出房价表的元素个数print) house_price.ndim)输出房价表的维度print) house _ ppppprint
t属性可以实现DataFrame反转,而在某些场景下,有些函数方法只能作为行或列,所以这个问题可以通过反转来解决。
Print (house _ price.t))。
2.DataFrame添加删除数据查询2.1 DataFrame基本表示方法访问一列数据DataFrame一列数据是数列,DataFrame是带标签的二维数组。每个标签相当于每个列的列名,是一个字典。
print(房价[crim]
在单个列中访问多行数据时,用数据帧访问多行列时,单个列中的数据帧是一个由series(pandas)定义的类,只有单个列中的数据帧访问一个series和一维NAND。
print (house _ price [ crim ] [ :5 ]
访问多列和多行数据DataFrame访问多列数据,并允许在一个列表中放置多个列索引。
print(house_price[[crim , ZN]][:5]
上面可以看到,把列放在前面,然后变成行。请不要混淆这一点。控制列,然后控制行。
多行数据的访问如果要访问多行数据中的所有列,我们不需要将所有列都添加到列表中,而是直接使用多行访问:。注意(:)列在前,行在后,不是所有列。
Print(房价[:] [:5]
除了访问多行数据,head和tail还可以通过DataFrame提供的head和tail方法获得多行数据,但是这两种方法获得的数据都是自始至终连续的。
print(house _ price . head()(print)house _ price . tail))
可以看到head方法访问了前五行数据。
tail方法访问最后五行的数据。
此外,我们可以在方法中传递行数参数来查看目标行数。
Print(house_price.head(2)) #例如,检查前两行数据。
2.2 DataFrame的loc和iloc查看方式其实我们可以感觉到data frame的基本数据查看方式并不是很灵活。pandas提供了两种更灵活的方法loc和iloc来访问数据。
loc方法是DataFrame的索引名的切片方法。如果没有传入索引名,则操作无法执行。锁定方法使用如下:
DataFrame.loc[行索引或条件的名称,列索引的名称]Iloc和loc的区别在于,Iloc必须接收行索引和列索引的位置。iloc方法的用法如下:
DataFrame.iloc[行索引位置,列索引位置](与基本访问方法相反,行在前,列在后,请注意)
Loc,iloc单列切片打印(house _ price.loc [: crim]) #访问列 crim 打印(house _ price.iloc [:3]) #访问第三列
Loc,iloc多列切片打印(house _ price.loc [:[CRIM , ZN]]) #访问 CRIM 和 ZN 打印的两列(house _ price.iloc [:[1,2]]) #访问列索引为1,2,
loc和iloc花式切片的行名为3、4、5、6、7和8列数据,名为“CRIM”和“ZN”
Print (house _ price.loc [3:8,[crim , Zn]]) #注意:这里的3:8,包括8相当于:house _ price.loc [[3,4,5,6,7,8],[crim , Zn]
Print (house _ price.iloc [3: 8,1: 3])这里的行位置和列位置与python的slice一致,不包含结尾,只包含开始位置。
上面的代码相当于:house _ price.iloc [[3,4,5,6,7],[1,2]]
Loc,iloc条件片loc可以传入表达式,结果会返回满足表达式的所有值。iloc方法不能接收表达式,因为这里的条件返回一个布尔值序列,而iloc可以接收的数据类型不包括Series。根据数列的构成,只需要把改成数列的数值拿出来就可以了。
输入两列数据,CRIM和ZN,列名 CRIM 小于0.02。
print(house _ price . loc[house _ price[CRIM ]0.02,[ CRIM , ZN]])
print(house _ price . iloc[(house _ price[ crime ]0.02)。values,[0,1]])这与上面的代码结果一致。
总结使用loc方法时,如果内部传入行索引名为区间,则前后为闭区间;使用iloc方法时,如果内部传入的行索引位置或列索引位置是一个间隔,则该间隔在前面关闭,在后面打开。
其实我们也能感受到,loc更灵活,它的代码可读性强,iloc代码简洁,但可读性不高。用哪个,多数情况下推荐loc。
2.3改变数据帧中的数据主要通过提取数据并将其重新分配给新数据来改变数据帧中的数据。对数据的修改无法撤消。
首先输出CRIM列中值为0.00632的数据,然后将值为0.00632的数据改为1,最后查询并输出CRIM列中值为0.00632的数据。
print(house _ price . loc[house _ price[ crim ]==0.00632]。values)house _ price . loc[house _ price[ crim ]==0.00632, crim]=1print (house _ price.loc
2.4向数据框架添加数据向数据框架添加列\行的方法:只需创建一个新的列\行索引,并为索引下的数据赋值即可。
添加列:
print(house _ price . columns)house _ price[ new ]=house _ price[ CRIM ]* 0.2 print(house _ price . columns)
如果新列的值相同,只需指定一个常数。
添加一行:
print(house _ price)house _ price . loc[ new ]=house _ price . loc[0]print(house _ price)
在特定位置添加一行,请参考:https://www.jianshu.com/p/d56bfa6813fe.
2.5数据帧删除数据删除数据的列\行需要drop方法,其用法如下:
data frame.drop的重要参数(labels,axis=0,level=none,inplace=false,errors= raise )及其说明:
参数描述标签接收字符串或数组,代表被删除的行或列的标签轴接收0或1,代表操作的轴方向。默认值为0levels以接收int或index名称,表示标签的级别。默认值为Noneinplace以接收布尔值。package操作是否对原始数据有效,默认值为False则删除列:
print(house _ price . columns)house _ price . drop(labels= new ,axis=1,in place=True)print(house _ price . columns)
删除行:
print(house _ price . index)house _ price . drop(labels= new ,axis=0,in place=True)print(house _ price . index)
3.描述性分析数据框架(DataFrame)数据描述性统计是一种统计方法,用于概括和表达事物的总体情况,以及事物之间的关联和类属关系。一维数组的集中趋势和分散程度可以简单地用几个统计值来表示。
3.1数值特征的描述性统计数值特征的描述性统计主要包括数值数据的完全情况、最小值、均值、中值、最大值、四分位数、极差、标准差、方差、协方差和变异系数。
Numpy库已经包含了许多统计函数,表中显示了其中一些。
函数名称描述函数名称描述np.min均值np.max最大值np.mean均值np.ptp极差np.median中值np.std标准差np.var方差np.cov协方差熊猫库是基于Numpy的,所以这些统计函数可以用于描述性统计。此外,pandas还提供了一种更方便的计算数字数据的方法。以下两种方法可用于计算CRIM列数据的平均值:
print(NP . mean(house _ price[ CRIM ]))print(house _ price[ CRIM ])。均值())
此外,pandas还提供了一个describe方法,可以一次性得到数据帧中所有数值特征的非空值个数、均值、四分位数和标准差。
打印(房价[:]。describe ()) #当然也可以选择一些列,比如house _ price [crime , Zn]。描述()
可以看出,该描述方法对于数据帧描述和统计是非常方便和实用的。此外,pandas还提供了与统计相关的主要方法,如下表所示。这些方法可以满足大多数数据分析所需的数值特征的描述和统计。
方法描述敏敏敏敏最大平均ptp范围中位数标准差var方差cov协方差sem标准误差众数众数众数样本偏斜度公司秋季样本峰度分位数四分位数计数非空数描述统计学mad平均绝对偏差3.2分类特征的描述性统计描述分类特征的分布,可以用频数统计表。Pandas通过value_count实现频率统计,其返回值类型为Series,即频率分布表。
print(house_price[RAD]。value_counts())
此外,pandas提供了category类,可用于将目标要素的数据类型转换为category类型:
房价[拉德]=房价[拉德]。astype( category )print(house _ price[ RAD ])
describe方法不仅支持传统的数值型数据,还支持分类数据的描述和统计。这四个统计量分别是列中非空元素的个数、类别个数、最大类别个数和最大类别个数。
房价[拉德]=房价[拉德]。astype( category )print(house _ price[ RAD ]。describe())
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。