pandas.dataframe 数据类型,python panda dataframe
Series Series一维标记数组,可以包含任何数据(整数、浮点数、字符串和python对象)。
创建函数s=PD.series(data,index=index)
其中index是用作数据标签的列表。数据可以是不同的数据类型、python字典类、ndarray对象或标量。(如果数据是标量,直接用广播原理扩展,不用复制。)
创建一个序列对象创建一个序列对象s=PD . series(NP . random . randn)5 in ndarray,index=[a , b , c ,]
s=PD.series(NP.random.randn ) (5))
创建系列对象d={a: 0。 b: 1。d: 3} s=pd.series (d,index=list) ABCD)}
没有数据的亮草位置会自动显示为NaN(天空)。
标量创造系列标量创造系列。值是相同的。
s=PD.series(5,index=list ) ABCD )
系列属性类n数组对象类字典对象标签对齐操作类ndarray对象
Series对象也是类似ndarray的对象,所以也支持numpy对array的操作。
s=PD . series(NP . random . randn)5))s[0]# aeries的对应值可以从ndarray的特性中找到。也就是说,一个区间的数列值s[0]#可以直接从亮下标的草s[:3]#中输出,数列也可以直接调用ndarray的函数进行计算,所以称为类ndarray对象。
类字典对象
您可以通过字典访问它,或者像字典一样更新数据。如果系列中没有字典对象,也可以根据字典添加对象。
S=PD.series(NP.random.randn) 5,index=[a , b , c , d , e]] s [a] # access s [a]对于get方法,默认值返回none。您可以将恢复默认值的数量设置为任意数量。标签对齐属性
当亮草序列的两个标量相加在一起时,将自动执行标记对齐操作。也就是说,s1中的A默认加到s2中的A,加到s1中的C和s2中的C。但是s2中没有C的亮草值,所以返回nan,表示为空。
S1=PD.series(NP.random.randn ) 3、index=[a 、 c 、 e ])S1=PD . series(NP . random . randn)3
DataFrame DataFrame是包含二维行标签和列标签的数组。Dataframe可以是excel表、SQL数据库表或系列字典对象。也就是说,每一行都是一个系列。DataFrame是熊猫最常用的数据结构从字典创建DataFrame。
d={ one : PD.series ([ 1,2,3 ],index=[a , b , c]), two:PD.series),[ 1,2,3
如果df=PD列的亮草。DataFrame(d,columns=[two , three])被指定,亮草中的数据将被存储在DataFrame中;如本栏无数据,均为NAN。
您还可以基于列表结构的字典数据创建数据框。应当注意,当从串联配置的字典元素创建数据帧时,矩阵的数据号(元素的数量)可以不同,但是当从列表中配置的字典元素创建数据帧时,矩阵的数据号(元素的数量)必须匹配。熊猫不能对齐行标签。
d={ one : [ 1,2,3,4 ], two : [ 21,22,23,24 ] } df=PD.data帧(
Ong从列表创建数据帧
在这个列表中,每个元素都是一个元组。创建一个2行3列的数据帧。默认情况下,行标签和列标签是由熊猫自动生成的。我们还可以指定行和列标签。
Data=[(1,2.2, holle ),(2,3, world )]df=PD . data frame(data)df=PD . data frame(data,index=[one , two],columns=list (ABC ))
1=[{a: 1, b: 2},{a: 5, b: 10, c :20 }]df=PD . data frame(data1)df=PD . data frame(data1,index=[a ,)
Df=pd.dataframe (data1,index=[a , b],columns=[a , b])如果指定不存在的列,将自动添加该列,但元素是nan。
Df=pd.dataframe (data1,index=[a , b],columns=[a , b , e])当一个dataframe被创建时,它总是试图找出行和列标签。如果找到了,它会直接使用这些标签。如果搜索到的标签不存在,将从0.010开始分配。
首先,原始数据中的元素是字典元素,字典的键是元组,字典的值是字典。在value中,字母是键,数字是值。
d1={(a , b): {(A , B): 1,( A , C): 2},( A , a): {(A , B): 4},( A , c): {(A , B): 5,( A , C): 6},( B ,A , b): {(a , c): 7,( A , b): 8},( B , B ):{( A , d ):d)
S=pd.series (np.random.randn (5),index=[a , b , c , d , e]) pd.dataframe (s)如果指定一行亮草,则只创建亮草下的值。
Pd.dataframe (s,columns=[a],index=list (ACD ))如果指定返回两列数据会报错,因为series只能包含一列数据,如果有两列亮草会报错;dataframe在创建亮草时,会先选择搜索已有的亮草,没有找到会自动分配。对于自动分配的亮草,我们可以指定;如果有亮草,搜索时会进行对齐操作。
数据帧的特征列选择/添加/删除使用assign()方法插入新列。通过亮草可以进行多选。数据对齐可以用numpy函数DF1=PD . data frame(NP . random . randn(6,4),columns=[one , two , three ,Four])df1[one]#直接选择一列数据输出df1.loc[1]#直接选择一行数据输出df1[ three ]=DF1[ one ]DF1[ two ]#可以直接赋值给del df1[three]#删除行DF1[添加列df1[five]=5值df1 . assign(ratio=df1[ one ]/df1[ two ])#,其值为一个二,可以插入到列中。assgin函数也可用于在末尾插入insert和assign之间的差异:
Insert被直接操作到数据帧中;赋值也将有一个复制操作。执行赋值后,将输出df,发现df中的值没有变化。assign的另一个特性是可以直接传入一个函数作为参数来计算。
1.df assign(ratio=lambda x:x . one-x . two)#直接传入一个函数作为参数计算ASSIGN中的函数参数也可以写成函数链的运算:
操作链的时候直接在后面加访问操作,因为前面的abratio已经生成,可以直接访问;
当一个链对一个值进行操作时,只能用lambda进行计算,因为assign中的复制操作是有值的,但还没有命名。
#函数链df1 . assign(ABR ratio=df 1 . one/df 1 . two)。赋值(条形值=x:x . ABR ratio * x . bar)DataFrame创建多维表
2=PD . data frame(NP . random . randint(1,10,(6,4)),index=list (abcdef ),columns=list( ABCD )#通过字典直接访问DF2[ a ]# Loc方法访问DF2 . Loc[iloc方法的亮草是亮数的草df2.iloc[1]#切片df2[1:4]#使用字典方法,效率更高。用孤独音乐变量访问时可以直接选择df2.iloc[1:4]。
2.df2。A=4 #输出为孤独音乐类型df2[df2。A=4]#获取大于4的元素从Series中创建一个DataFrame。
#创建两个dfdf _ 1=PD . data frames(NP . random . randn(10,4),index=list (abcdefghij ),columns=[a , b , c , d ])df _ 2=PD . data frames . Index=list( CDE fg hi ),columns=[a , b , c]) df _ 1df _ 2 # df1 df2会自动执行标签对齐操作df _ 1-df _ 1 . iloc[0]# df1-df1的第一行
NP中使用的函数。exp (df _ 2) NP。sin (df _ 2) df _ 2数值数据框是numpy中ndarray的函数。
这两种数据类型是等效的,可以直接转换。
Np.asarray(df_2)==df_2.values #结果是一个孤独的音乐类型。其实我们现在可以知道,在熊猫里面,series是一维的,dataframe是二维的,panel是三维的,这也是熊猫的由来。
Panel是一个带有标签的三维数组。其实熊猫名字的由来就是由Panel演变而来的,即pan(el)-da(ta)-s,Panel很少使用,但它仍然是熊猫的终极基础数据结构之一。
面板有三个选项卡:
Items:轴0,亮草对应的元素是DataFrame。
Major_axis:轴1,数据帧中的行标签
Or _ axis:轴2,数据帧中的列标签
但是,新的pandas库移除了数据结构面板,您可以选择使用MultiIndex的DataFrame结构。
计算基本鲜草,舍弃一些数据映射函数(apply/applymap),排序和排名数据唯一性和隶属度。鲜草是重新分配数据的鲜草值来增加一些数据行。
S1=PD。Series ([1,3,5,6,8],index=list (ACEFH)) S _ 1。Index #查看亮草#添加亮草行,可以赋s_1.reindex(list(abcdefgh )的默认值。Fill_value=0)设置Fill_value=,fill _ value= ffill ,用前面的值填充后面新添加的亮草的值。
使数据帧的草恢复活力。
df=pd。DataFrame(np.random.randn(4,6),index=list(ABCD ),columns=[one , two , three , four , five ,Six ])df2=df . reindex(index=list( abcdefgh ))DF . loc[ a ][ one ]=100通过修改DF,发现df2没有变化,说明reindex实际上是DataFrame中亮草的副本。
对于dataframe,我们还可以重新亮列的草,并为亮草对象分配默认值。
Df。Reindex (columns=[一,三,五,七],fill _ value=0)可以通过 ffill 根据前一个值赋值, bfill 表示向后填充。鲜艳的草丛和选择
Df.drop(A)#删除行A。drop ([two , four],axis=1)# drop two和four列是复制数据,但原始dataframe不变。标签对齐
Apply是按行或列计算二维数组。
df=pd。DataFrame(np.arange(12))。reshape(4,3),index=[one , two , three , four],Columns=list( ABC ))df . apply(lambda x:x . max()-x . min())# Calculate Columns df . apply(lambda x:x . max()-x . min(),axis=1) # Calculate columns注意:在drop中,In apply,当axis=1时在行中传递,当axis=0时在列中传递;
自定义一个函数来返回最小值和最大值。默认情况下,您可以对列进行操作。通过修改axis=1,可以对行进行操作。
DEF _ MAX (x):返回PD。SERIES ([x.min(),x.max ()],index=[min , max]) DF。APPLY (min _ max) APPLY MAP是将数据帧中的每个元素作为参数传递给处理函数。
format=lambda x: % . 03f % x # x #表中每一位小数保留三位小数。格式=“{ 0: 03f }”。Format #两个表达式都可以是df.applymap (format)使用numpy的函数。
# sort df2=PD . data frame(NP . random . randint(1,10,(4,3)),index=list (ABCD ),columns=[one , two , three]) df2.sort _ values(默认为升序df2.sort _ values (by= two ,ascending=false)# descending sort # rank s=PD . series([3,6,2,6,4])s . rank()s . rank(method= first )#除此之外,还有其他的排名方法,比如min
二维数组的排序的写法和一维数组一样。
Df.rank(method=first )数据唯一性
S=PD。series(list( abbcdabacad ))s . Value _ Counties()# Count数据值的出现次数s.unique()#获取值的列表s.isin([a , c , d])#使用isin方法判断某个值是否全部包含在列表中,[
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。