博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pandas 数据结构与基础功能
阅读量:2240 次
发布时间:2019-05-09

本文共 2924 字,大约阅读时间需要 9 分钟。

pandas 数据结构与基础功能

目录

一、series 对象

1、生成

2、切片

3、series类型的转换

二、DataFrame(数据框)对象

1、生成

2、导入外部文件

3、查看数据框信息

4、数据框对象的索引和切片

5、删除和新增

6、数据框修改列名

7、数据框对象的导出

一、series 对象

1、生成
import pandas as pdimport numpy as nppd.Series([1,2,‘a’])  # Series 中 首字母s要大写0    11    22    adtype: object         # 和数组对比,它不会转换数据类型,默认是object
2、切片
# 一般索引c = pd.Series(np.random.rand(10)) #随机生成一列数据cc[0:8:2]         #0-8是范围(左闭右开),2是步长
# 重命名索引d=pd.Series(np.random.rand(5),index=list('abcde'))  # 重新命名索引为‘abcde’dd['a':'c']   # 当使用重新命名的索引切片,这时候切片的右边也是包含的
# 布尔索引d[d>0.2]         #索引时,中括号中可以是具体的值,也可以是判断条件
3、series类型的转换
# astype 方法  数据类型转换a = pd.Series(['1','2','a'])a.astype(np.float,errors='ignore')

astype 方法需要注意errors参数, 这个参数有两个可能取值,一个是"raise",一个是"ignore"。 raise的意思是如果在转化过程中出现错误, 则抛出一个错误提示,并停止程序执行。 "ignore"的意思是如果在转化过程中出现错误,则忽略这个错误, 对出错的单元格保持原来的类型,只对没有出现错误的单元格进行转换。 因此如果出现转化错误,则这个series的类型为object。

# pd.to_numeric 方法  数据类型转换pd.to_numeric(a,errors='coerce')    # errors 这个参数有三个可能取值,分别是'ignore', 'raise', 'coerce'(强迫), 默认的取值是 'raise'.
# map 方法 不会改变原有数据a=pd.Series(["1","2","a"])def f1(x):    try:        v=float(x)    except:        v=np.nan    return va.map(f1)0    1.01    2.02    NaNdtype: float64  # 转换成浮点型# map 计算b = pd.Series([1,2,3])b.map(lambda x:x+2)Out[21]:0    31    42    5dtype: int64

二、DataFrame(数据框)对象

1、生成
#数据框可以用colunmns函数重命名列data1=pd.DataFrame(np.random.rand(5,3),columns=(['a','b','c']))data1
2、导入外部文件
# 导入文件和工作文件在一个文件夹省略地址,直接写文件名     pd.read_csv('D:/数分学习资料/python/数据清洗/pandas/individual1.csv',encoding='GBK')
3、查看数据框信息
a.info()   # 查看数据框a 的基本信息a.head(3)  # 查看数据框a前三行a.tail(3)  # 查看数据框a后三行a.shape    # 返回维度 a.columns  # 返回所有变量的名字a.index   # 返回索引值a.values  # 返回具体的元素,数组形式a.T      # 数据框对象的转置
4、数据框对象的索引和切片
#切取列data1['a']   # a为列名,以下都为列名data1.a      # 列名字为字符串可以用这个方法,数值就不行data1[['a','c']]   # 切取两列# 切取行data1[0:1]   # 切取行必须用冒号,左包含右不包含,列名和行名不参与切片
# loc 方法 :显式索引  可同时切行和列data1.loc[:,'x1':'x2']  # 切取x1和x2两列data1.loc[['a','b'],['x1','x2']]   # 切取a,b两行和x1、x2两列# iloc 隐式索引data2.iloc[0:2,0:1]  # 左包含右不包含# ix 方法  显式和隐式data2.ix[0:2,'x1':'x2']
#布尔索引data1[data1.x1>0.5]   #  返回x1中大于0.5的行data1[(data1['x1']>0.5) | (data1['x2']<0.5)]  #返回x1中大于0.5和x2中小于0.5的行
5、删除和新增
# 删除列data1.pop('x3')              # 当删除对象不存在就会报错data1.drop(columns=['x2'],axis=1,inplace=False)  # 删除列时,输入axis=1,删除行时,输入axis=0
#新增列data1['z1']=10   # 新增z1列,值为10data1["z2"]=data1["x2"]**2data1['x2'].rank(method='first',ascending=False) #method参数用来设置遇到相同值的时候如何计算秩 # 生成一列并降序排序,ascending 默认为升序 ,=false就是降序# map 方法data1['z3']=data1['x2'].map(lambda x:x**2) # apply 方法data1.apply(lambda x:max(x.x2,x.x3),axis=1) #新增一列,新增列取x2和x3中的较大值做为元素axis=1,生成列,axis=0 ,生成行# applymap 方法data1=pd.DataFrame(np.random.randint(3,6,(3,2)),columns=['x1','x2'])data1.applymap(lambda x:x+2)
6、数据框修改列名
#rename 方法data1=pd.DataFrame(np.random.rand(4,3),columns=['x1','x2','x3'])  # 随机生成一个数据框data1.rename(columns={
"x1":"z1","x2":"z2"}) # 修改列名,x1→z1,x2→z2
7、数据框对象的导出
data1.to_csv('test.csv',index=False)  #index=False,索引列不会显示

转载地址:http://bxqbb.baihongyu.com/

你可能感兴趣的文章
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>