数据分析之Pandas学习笔记(一)(入门)

创建一个简单的Series对象(一维)

我对Series对象的理解就是一个类似  只有一列数据的Excel表的一维数组

啊哈哈、因为我觉得它和numpy太相似,经常默认把numpy对象和series对象都叫series了
实际运用如果numpy对象也是一维的,也差不多就是这么回事,一个带索引,一个不带索引罢了


硬要计较Series对象和Numpy对象的区别。
我能想到的有以下几点:

1,type类型不同

2,Pandas包内置Numpy包,你在pip下载Pandas包的时候,它自动把Numpy包也给顺带下了

3,Series对象是Pandas包里的对象,它是一个带索引的一维数组对象,
  而ndarray的对象是Numpy包里的对象,它就是一个数组,没有行列索引,可一维也可多维

4,实际中如果ndarray也是一维的,也差不多就是这么回事,一个带索引,一个不带索引罢了

~ ~心里有(B树)就可以了、、

好了,我们心中有B树了以后,接下来开始动手创建吧~

import pandas as pd
import numpy as np
data = np.arange(20,26)
sris = pd.Series(data,index=list('abcdef'))
# 当然你手动一个一个在index列表中敲你要显示的行索引标签也行,比如像下面这样写
# sris = pd.Series(np.arange(20,26),index=['a','b','c','d','e','f'])
print(sris)

创建的时候你传进去的data

可以是一个list,
也可以是一个ndarray对象,
也可以是一个别的Series对象,
也可以是一个字典,

总之是一个序列应该都阔以= =。你自己阔以试试别的序列形式,

我上面介绍的三种都是可行的。

结果如下图所示:

因为你把默认的索引标签[0,1,2,3,4...]改成了['a','b','c',...]
所以当你取值的时候,比如你要取25这个值
那么你可以这样写:
	通过标签索引,获取值 	  -->    sris['f']
	或者通过默认索引,获取值  -->    sris[5]

在这里插入图片描述

创建一个简单的DataFrame对象(二维)

我对DataFrame对象的理解就是一个类似     Excel表的二维数组。

可以有	行列索引标签(label)	index  columns  不设置则默认0,1,2,3...
		
		行列索引名			name
		对表起名字			name
		
		数据透视表			pivot_table()
		Emmm...你能想到Excel表格的所有操作,Pandas应该都能实现。
		
		当然这只是一个简单地 入门 认识和理解。
		
		如果认为Pandas只是一个高级版的 Excel?Power BI?那岂不是很可笑、

简单认识之后、下面我们开始创建吧~

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(4 * 4).reshape((4,4)))
print(df)

显示结果如下:
在这里插入图片描述
你感觉这样看都是一串数字太容易混淆了,那么我们设置行列标签作为索引。

df = pd.DataFrame(np.arange(4 * 4).reshape((4,4)),index=list('abcd'),columns=['h1','h2','h3','h4'])

显示结果如下:
在这里插入图片描述
这样看起来还不错~
你要行列索引取值的时候
可以通过默认的数字索引,也可以通过索引标签取你想要的值

下面我们给行列索引起一个名字,给整个‘表’也起一个名字。

import pandas as pd
import numpy as np
#创建一个Index对象,直接将索引和索引名全写进去
#省的后面给索引命名的时候obj.index.name=   obj.columns.name=
index_name = pd.Index(list('abcd'),name ='idx')
columns_name = pd.Index(['h1','h2','h3','h4'],name ='col')

df = pd.DataFrame(np.arange(4 * 4).reshape((4,4)),index=index_name,columns=columns_name)
#没办法,表名在创建DataFrame的时候没有这个参数,只能手动obj.name一下了。
df.name = 'value_table'
print(df)
#因为你在Jypter交互式界面中写df是会显示出这个表名的
#但是在Pycharm中,直接print(df)是看不到表名的
#我这里手动print一下 = =。凑合看看,意思一下。。
print('      df.name       ')

好了,显示结果如下:
在这里插入图片描述
虽然看上去很痛苦难受。。。但是你还是得要适应,习惯这种看法。。。
不然后面接触层次化索引,level的时候你还是得要搞清楚这些。。。

pandas.DataFrame.from_dict官方文档

data = {
	'foo':[1,2,3,4],
	'bob':['a','b','c','d']
}
df = pf.DataFrame(data)

传进去的data,和创建Series差不多,
可以是字典
可以是数组
可以是别的DataFrame对象

字典的话,还有个pd.DataFrame.from_dict(data)这样一个方法,
		主要是from_dict()方法,里面有一个参数orient='index'
		可以把字典中的key变成行索引
         列索引命名的话,添加columns=[....]参数即可
         

数据是否缺失(NaN)

pd.isnull(obj)  		返回相应的DataFrame或者Series,里面值为bool

pd.notnull(obj)			返回相应的DataFrame或者Series,里面值为bool

obj. head()看前几行(默认选取前5行)

obj.tail()看倒数几行(默认选取倒数5行)

行列选取

选取某一列
df['h1']

在这里插入图片描述

选取某一行
df.loc['d']

df.iloc[3]

两者的区别:
		loc是通过索引标签	   取对应索引的值
		iloc是通过位置(整数)取对应索引的值

在这里插入图片描述

选取多个行或者多个列obj.take( [ int , int ] , axis= )
df.take([0,3],axis=1)

只能通过位置索引(整数),选取 单个单个 的行或者列,不能切片。

axis = 参数为0选取行,参数为1选取列

在这里插入图片描述

索引选取多个列
df[['h1','h3']]

在这里插入图片描述

索引选取多个行
df.loc[['a','c']]
或者df.iloc[[0,2]]

在这里插入图片描述

切片选取多个列
这里划重点了!!!!!!!!!!!!
利用标签的切片和普通的位置切片不同,其末端是包含的。!!!!!!

举例:
利用标签 -----切行

df.loc[['a':'c']]

在这里插入图片描述
可以发现我们切出了3行数据
下面我们利用位置----切行

df.iloc[0:2]

在这里插入图片描述
可以发现,切出了的数据只有2行

所以在切片中,利用标签和位置,进行切片,切出的结果是不一样的!!!

对列进行标签和位置切的效果和上面的也一样。。

其他

obj.values可以将DataFrame对象转成ndarray对象
ndarray对象.tolist()可以转成list格式
del obj[’ '] 只能删除列
索引,Index对象

通过索引返回的列是相应数据的视图

pandas的Index可以包含重复的标签
生成Index对象 --> pd.Index() --> 该对象为不可变类型
			可用append
				difference  	差
				intersection 	交集
				union  			并集
				delete[index]
				drop(value)
				insert
				unique
			来操作Index对象




下一篇:数据分析之Pandas学习笔记(二)(DataFrame的基本操作)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值