pandas中dataframe的数据描述方法,pandas里面的dataframe有什么作用
本文主要介绍熊猫的知识点总结——data frame。DataFrame是一种表格数据结构,它包含一组有序的列,每个列可以有不同的值。下面我们一起走进文章了解更多细节,有需要的朋友也可以参考一下。
00-1010 1.数据帧的创建根据字典2创建读取文件。数据帧轴3的概念。数据帧的某些属性的索引,切片修改数据的重新索引。放弃指定轴上的值。算术运算函数应用与映射排序与排名汇总与计算描述缺失数据的统计处理
目录
DataFrame是一种表格数据结构,它包含一组有序的列,每个列可以有不同的值。DataFrame既有行索引又有列索引。它可以看作是一个由系列组成的字典,但这些系列共用一个索引。
创建DataFrame的方法有很多,但最重要的是根据dict创建,读取csv或txt文件。这里主要介绍这两种方法。
1、DataFrame的创建
数据={
州 :[俄亥俄州,俄亥俄州,俄亥俄州,内华达州],
年 :[2000,2001,2002,2001,2002],
pop:[1.5,1.7,3.6,2.4,2.9]
}
帧=pd。数据帧(数据)
设计
#输出
流行州年
0 1.5俄亥俄州2000
1 1.7俄亥俄州2001
2 3.6俄亥俄州2002
3 2.4内华达州2001年
4 2.9内华达州2002年
DataFrame的行索引是index,列索引是columns。我们可以在创建数据帧时指定索引的值:
帧2=pd。DataFrame(data,index=[一,二,三,四,五],columns=[年,州,流行,债务])
框架2
#输出
年州pop债务
一辆2000俄亥俄1.5 NaN
两个2001年俄亥俄州1.7南
三个2002年俄亥俄州3.6南
四2001内华达2.4南
五2002内华达2.9南
您也可以使用嵌套字典创建数据框架。在这种情况下,外部字典的关键字被用作列,内部字典的关键字被用作索引3360。
pop={ 内华达州 :{2001:2.4,2002:2.9},俄亥俄州 : { 200033601.5,2001:1.7,2002:3.6}}
帧3=pd。数据帧(弹出)
框架3
#输出
俄亥俄州内华达
2000南1.5
2001 2.4 1.7
2002 2.9 3.6
我们可以使用index、columns和values来访问DataFrame的行索引、列索引和数据值,数据值返回一个2D n array。
框架2 .价值观
#输出
数组([[2000,俄亥俄,1.5,0),
[2001,俄亥俄州,1.7,1],
[2002年,俄亥俄州,3.6,2],
[2001年,《内华达》,2.4,3],
[2002,内华达,2.9,4]],dtype=object)
根据字典创建
读取文件以生成数据帧
code>最常用的是read_csv,read_table方法。
该方法中几个重要的参数如下所示:
参数描述header默认第一行为columns,如果指定header=None,则表明没有索引行,第一行就是数据index_col默认作为索引的为第一列,可以设为index_col为-1,表明没有索引列nrows表明读取的行数sep或delimiter分隔符,read_csv默认是逗号,而read_table默认是制表符tencoding编码格式
其他创建DataFrame的方式有很多,比如我们可以通过读取mysql或者mongoDB来生成,也可以读取json文件等等,这里就不再介绍。
2、DataFrame轴的概念
在DataFrame
的处理中经常会遇到轴的概念,这里先给大家一个直观的印象,我们所说的axis=0即表示沿着每一列或行标签索引值向下执行方法,axis=1即表示沿着每一行或者列标签模向执行对应的方法。
3、DataFrame一些性质
索引、切片
我们可以根据列名来选取一列,返回一个Series:
frame2[year]
我们还可以选取多列或者多行:
data = pd.DataFrame(np.arange(16).reshape((4,4)),index = [Ohio,Colorado,Utah,New York],columns=[one,two,three,four])
当然,在选取数据的时候,我们还可以根据逻辑条件来选取:
data[data[three]>5]
pandas提供了专门的用于索引DataFrame的方法,即使用ix方法进行索引,不过ix在最新的版本中已经被废弃了,如果要是用标签,最好使用loc方法,如果使用下标,最好使用iloc方法:
#data.ix[Colorado,[two,three]]
修改数据
可以使用一个标量修改DataFrame
中的某一列,此时这个标量会广播到DataFrame的每一行上:
data = {
也可以使用一个列表来修改,不过要保证列表的长度与DataFrame长度相同:
frame2.debt = np.arange(5)
可以使用一个Series,此时会根据索引进行精确匹配:
val = pd.Series([-1.2,-1.5,-1.7],index=[two,four,five])
重新索引
使用reindex方法对DataFrame进行重新索引。对DataFrame进行重新索引,可以重新索引行,列或者两个都修改,如果只传入一个参数,则会从新索引行:
frame = pd.DataFrame(np.arange(9).reshape((3,3)),index=[1,4,5],columns=[Ohio,Texas,California])
填充数据只能按行填充,此时只能对行进行重新索引:
frame = pd.DataFrame(np.arange(9).reshape((3,3)),index = [a,c,d],columns = [Ohio,Texas,California])
丢弃指定轴上的值
可以使用drop
方法丢弃指定轴上的值,不会对原DataFrame产生影响
frame = pd.DataFrame(np.arange(9).reshape((3,3)),index = [a,c,d],columns = [Ohio,Texas,California])
算术运算
DataFrame在进行算术运算时会进行补齐,在不重叠的部分补足NA:
df1 = pd.DataFrame(np.arange(9).reshape((3,3)),columns=list(bcd),index=[Ohio,Texas,Colorado])
可以使用fill_value方法填充NA数据,不过两个df中都为NA的数据,该方法不会填充:
df1.add(df2,fill_value=0)
函数应用和映射
numpy的元素级数组方法,也可以用于操作Pandas对象:
frame = pd.DataFrame(np.random.randn(3,3),columns=list(bcd),index=[Ohio,Texas,Colorado])
另一个常见的操作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能。
f = lambda x:x.max() - x.min()
元素级的Python函数也是可以用的,使用applymap方法:
format = lambda x:%.2f%x
排序和排名
对于DataFrame,sort_index可以根据任意轴的索引进行排序,并指定升序降序
frame = pd.DataFrame(np.arange(8).reshape((2,4)),index=[three,one],columns=[d,a,b,c])
DataFrame也可以按照值进行排序:
#按照任意一列或多列进行排序
汇总和计算描述统计
DataFrame
中的实现了sum、mean、max等方法,我们可以指定进行汇总统计的轴,同时,也可以使用describe函数查看基本所有的统计项:
df = pd.DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index=[a,b,c,d],columns=[one,two])
DataFrame
也实现了corr和cov方法来计算一个DataFrame的相关系数矩阵和协方差矩阵,同时DataFrame也可以与Series求解相关系数。
frame1 = pd.DataFrame(np.random.randn(3,3),index=list(abc),columns=list(abc))
处理缺失数据
Pandas中缺失值相关的方法主要有以下三个:
isnull方法用于判断数据是否为空数据;
fillna方法用于填补缺失数据;
dropna方法用于舍弃缺失数据。
上面两个方法返回一个新的Series
或者DataFrame
,对原数据没有影响,如果想在原数据上进行直接修改,使用inplace参数:
data = pd.DataFrame([[1,6.5,3],[1,np.nan,np.nan],[np.nan,np.nan,np.nan],[np.nan,6.5,3]])
对DataFrame
来说,dropna方法如果发现缺失值,就会进行整行删除,不过可以指定删除的方式,how=all,是当整行全是na的时候才进行删除,同时还可以指定删除的轴。
data.dropna(how=all,axis=1,inplace=True)
到此这篇关于Pandas-DataFrame知识点汇总的文章就介绍到这了,更多相关Pandas-DataFrame内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。