pandas相关操作
Posted liuhuacai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas相关操作相关的知识,希望对你有一定的参考价值。
import pandas as pd import numpy as np ‘‘‘ 一.创建df 1.定义df :传递字典 1.1每一列的名称作为键 每个键都有一个数组作为值【key:数组】 1.2 嵌套字典生成df 一级元素的key作为列名 二级元素的key作为行名 1.3选择需要的创建df pd.DataFrame(dict,columns=[‘key1‘,‘key2‘]) 1.4指定df的标签(index)pd.DataFrame(dict,columns=[‘key1‘,‘key2‘],index = [‘one‘,‘two‘,`````]) 2.定义df :数据矩阵 + index + columns 2.1 直接传入 值 标签 列名 pd.DataFrame(np.arange(16).reshape(4,4),index=[‘one‘,‘two‘,....],columns=[‘object‘,‘‘,..]) 二.选取元素 1.取值 1.1查看 【标签 列名 值 】 frame.index frame.columns frame.values 1.2取一列 frame[[‘object1‘,‘object2‘]] frame.object 1.3取行 frame[1:3] 1.4取单个值 frame[‘object‘][2] df----Series-----索引取值 2.赋值 2.1 给行列标签命名 frame.index,name = ‘id‘ frame.columns.name = ‘item‘ 2.2 添加一列 frame[‘new‘] = 12 翻译为 frame[‘new‘] = [12,12,12,12] 2.3 修改一列 frame[‘new‘] = Series 2.4 修改单个值 df -- 列series -- 索引 frame[‘new‘][2] = 3 3. 判断元素是否在df中 3.1 df = frame.isin([1.0,‘pen‘]) 4.删除列 4.1 del frame[‘new‘] 5.筛选 5.1 全部筛选 frame[frame<12] 5.2 筛选某一列 frame[frame.new<12] 6.转置 frame.T 三.index对象 1.确定是否有重复索引 serd.index.is_unique frame.index.is_unique 2.对于重复索引 serd[‘重复索引‘] 返回一个Series frame[‘重复索引‘] 返回Frame 3.Series.reindex([索引数组],method=‘ffill‘) frame.reindex([索引数组],method=‘ffill‘,columns=[‘‘,‘‘,....]) 4.删除drop() 返回【不包括已删除索引及元素的新对象】 ser.drop([‘‘,‘‘])删除多个索引,要用数组输入 删除行 :Frame.drop([‘‘,‘‘,‘‘]) 删除列 :Frame.drop([‘‘,‘‘,‘‘],axis=1) 5.元素级 数据对其及运算(加) 4.1两个series对象 都有的标签,对应数据相加 只有其中一个对象有的index NaN填充 4.2两个Frame对象 两个frame都有的index 和 columns 对应元素相加 反之用NaN填充 四.数据结构间的运算 1.加减乘除(元素级):【满足广播机制】 a.add(b) sub() div() mul() 五.函数应用和映射【库函数】 1.操作元素的函数(通用函数) np.sqrt(frame) ##每个元素的平方根 2.按行列操作的函数 f = lambda x:x.max()-x.min() frame.apply(f) ###按行计算 frame.apply(f,axis=1) ###按列运算 2.1返回多个值 def f(x): return pd.Series([x.max(),x.min(),],index=[‘min‘,‘max‘]) frame.apply(f) 3.统计函数 frame.sum() frame.mean() frame.describe() 4.排序 4.1 ser.sort_index() 4.2 ser.sort_index(axis=1) 4.3 frame.sort_index() 4.4 frame.sort_index(axis=1) 4.4 frame.sort_index(by=[‘columns1‘,‘columns2‘]) 5.排位次 rank ser.rank() ser.rank(mothod=‘‘first) ser.rank(ascending=False) 6.相关性corr() 和 协方差 cov() 7.NaN数据 7.1创建np.NaN pd.series([1,2,3,np.NaN,4],index=[‘ ‘,‘ ‘,.....]) 7.2过滤NaN ser.dropna() ser[ser.notnull()] frame.dropna()行或列有一个有NaN都会被直接删除 frame.dropna(how=‘all‘)行列所有元素都为NaN时删除 7.3为NaN填充值 frame.fillna(0) 所有NaN填充0 frame.fillna(‘ball‘:1,‘mug‘:0,‘pen‘:99) 不同列的NaN替换成不同的值 8.等级索引和分级 8.1 等级索引: mser = pd.Series(np.random.rand(8),index=[[‘white‘,‘white‘,‘white‘,‘blue‘,‘blue‘,‘red‘,‘red‘,‘red‘], [‘up‘,‘down‘,‘right‘,‘up‘,‘down‘,‘up‘,‘down‘,‘left‘]]) white up 0.322237 down 0.093246 right 0.181997 blue up 0.887448 down 0.032504 red up 0.612139 down 0.125961 left 0.030511 dtype: float64 print(mser[‘white‘]) print(mser[:,‘up‘]) dtype: float64 up 0.256720 down 0.849860 right 0.581021 dtype: float64 white 0.256720 blue 0.412591 red 0.893404 dtype: float64 print(‘选取特定元素:‘,mser[‘white‘,‘up‘]) 选取特定元素: 0.9149258487509073 ‘‘‘ mser = pd.Series(np.random.rand(8),index=[[‘white‘,‘white‘,‘white‘,‘blue‘,‘blue‘,‘red‘,‘red‘,‘red‘], [‘up‘,‘down‘,‘right‘,‘up‘,‘down‘,‘up‘,‘down‘,‘left‘]]) print(mser) print(mser[‘white‘]) print(mser[:,‘up‘]) print(‘选取特定元素:‘,mser[‘white‘,‘up‘]) a = mser.unstack() print(‘转化成df:\n‘,a) ‘‘‘ 转化成df: down left right up blue 0.241679 NaN NaN 0.025439 red 0.225099 0.410451 NaN 0.180735 white 0.266825 NaN 0.536098 0.900275 ‘‘‘ print(‘df转化成series:\n‘,a.stack()) ‘‘‘ df转化成series: blue down 0.241679 up 0.025439 red down 0.225099 left 0.410451 up 0.180735 white down 0.266825 right 0.536098 up 0.900275 dtype: float64 ‘‘‘ ###行列都定义等级索引 mframe = pd.DataFrame(np.random.randn(16).reshape(4,4), index=[[‘white‘,‘white‘,‘red‘,‘red‘],[‘up‘,‘down‘,‘up‘,‘down‘]], columns=[[‘pen‘,‘pen‘,‘paper‘,‘paper‘],[1,2,1,2]]) print(mframe) ‘‘‘ pen paper 1 2 1 2 white up 1.729195 -0.451135 -0.497403 -0.938851 down -1.267124 0.422545 0.069564 -0.735792 red up 0.298684 -0.442771 1.301070 0.234371 down 2.266180 -0.549653 0.108434 -0.394364 ‘‘‘ ###重新调整顺序和为层级排序 mframe.columns.names=[‘object‘,‘id‘] ##列名加分类名 mframe.index.names=[‘colors‘,‘status‘] ##行名加分类名 print(mframe) ‘‘‘ object pen paper id 1 2 1 2 colors status white up 0.288562 -0.519511 0.516333 0.643500 down 1.759466 -1.194383 -0.624583 1.027694 red up 0.425757 -1.028554 -0.660548 1.074917 down 0.242714 -0.550235 -0.749478 -0.015347 ‘‘‘ ##调整顺序 colors和status列换位置 swaplevel print(mframe.swaplevel(‘colors‘,‘status‘)) ‘‘‘ object pen paper id 1 2 1 2 status colors up white -0.937241 -1.051002 0.621721 1.227554 down white 0.951904 0.585412 -0.315780 -0.336806 up red -1.824083 0.284429 0.310883 0.031538 down red 0.851415 0.598169 1.967784 -0.421712 ‘‘‘ ‘
以上是关于pandas相关操作的主要内容,如果未能解决你的问题,请参考以下文章