首先查看数据,分别为数据1,数据2,数据3
一、数值替换
import pandas as pd # 数值操作 df = pd.read_excel('/Users/caizhengjie/Desktop/a.xlsx') print(df) # 数值的替换——1对1替换 print('替换后.........') df['姓名'].replace('王峰','caizhengjie',inplace=True) print(df) # 数据1 df1 = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df1) # 数值的多对一替换 df1['年龄'].replace([240,260,280],33,inplace = True) print(df1) # 数值的多对多的替换 df2 = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df2) df2['年龄'].replace({240:32,260:33,280:34},inplace=True) print(df2)
二、数值排序
import pandas as pd # 数值排序 df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) # 按照一列数值进行排序 ''' 用到的方法:sort_values(),在sort_values()方法后面要指明要排序的列名,以及是升序和降序 df.sort_values(by=['列名'],ascending=False) ascending=False 表示为降序排序 ascending=True 表示为升序排序 默认的是升序,即可以不指定排序方式 ''' # 按照年龄降序排序 print(df.sort_values(by=["年龄"],ascending=False)) # 按照年龄升序排序 print(df.sort_values(by=["年龄"],ascending=True)) # 按照有缺失值的列进行排序 ''' 当排序有缺失值的时候,可以通过设置na_position参数对缺失值的显示位置进行设置,默认参数值为last,可以不写,表示将缺失值显示值在最后 ''' # 将空缺值放在最后 print(df.sort_values(by=["年龄"])) # 将空缺值放在最前面 print(df.sort_values(by=["年龄"],na_position='first')) # 按照多列数值进行排序 ''' 当遇到列名1遇到重复时,在按照列名2进行排序 ''' print(df.sort_values(by=["年龄","成交时间"], ascending=[True,False]))
三、数值排名
import pandas as pd # 数值排序名 df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) ''' 使用方法:rank()方法,rank()方法里面主要有两个参数,一个是ascending,用来指定是升序还是降序 另一个是method method 说明 average 与excel中RANK_.VG函数功能一样 first 按值在所有的排列数据中出现的先后排序排名 min 与excel中RANK.EQ函数功能一样 max 与min相反,取重复值对应的最大排名 ''' print(df['销售ID'].rank(method='average')) print(df["销售ID" ].rank(method='first')) print(df["销售ID" ].rank(method='min')) print(df["销售ID" ].rank(method='max')) print(df["年龄" ].rank(method='min',ascending=False))
四、数值删除
import pandas as pd # 数值删除 df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) # 删除列--通过删除列名 print(df.drop(['销售ID','成交时间'],axis=1)) # 删除列--通过直接传入待删除列的位置,也需要用到axis参数 print(df.drop(df.columns[[4,5]],axis=1)) #也可以不带axis参数 print(df.drop(columns=['销售ID','成交时间'])) # 删除行 print(df.drop([4,5],axis = 0)) # 删除特定行 # 不用直接删除满足条件的值,把要删除的值过滤掉就可以 print(df[df["年龄"]<40])
五、数值计数
import pandas as pd # 数值计数:就是计算某个值在一系列数值中出现的次数 df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) print("统计销售ID每个值的数量") print(df['销售ID'].value_counts()) # 可以查看数值占比 # 只需要给value_counts()方法传入参数normalize = True print(df['销售ID'].value_counts(normalize=True)) # 通过设置sort=False可以实现不按计数值降序排列 print(df['销售ID'].value_counts(normalize=True,sort=False))
六、唯一值获取
''' 唯一值获取:就是把某一系列值删除重复项以后的结果,一般可以将表中的某一列认为是一系列值 ''' import pandas as pd df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) print('销售ID唯一值:',df['销售ID'].unique())
七、数值查找
import pandas as pd # 数值查找:就是查看数据表中的数据是否包含某个值或某些值 df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) # 对年龄这一栏查看是否包含31,21 print(df['年龄'].isin([31,21])) # 可以对全表查看是否包含某些值 print(df.isin(['蔡政洁']))
八、区间切分
import pandas as pd # 区间切分:就是将一些列数值分成若干份 df = pd.read_excel('/Users/caizhengjie/Desktop/数据2.xlsx') print(df) # 方法:用到cut方法,cut方法里面有个参数bins用来指明切分区间 print(pd.cut(df['年龄'],bins=[0,3,6,20])) # 方法qcut()方法,不需要事先指明切分区间,只需要指明切分个数 print(pd.qcut(df['年龄'],3))
九、插入新的行或列
import pandas as pd # 插入新的行或者列 df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) # python插入列的方法是insert()方法,在insert()方法后的括号中指明要插入的位置,插入后新列的名,以及要插入的数据 # python没有专门用来插入行的方法,可以把要插入的行当作一个新表,然后进行拼接 # 两种方法增加列 df.insert(2,'商品类别',['cat01','cat02','cat03','cat04','cat05','cat06']) print(df) df['商品类别']=['cat01','cat02','cat03','cat04','cat05','cat06'] print(df)
十、行列互换
import pandas as pd # 行列互换:就是将数据行转换到列上,列数据转换到行上 df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) # 第一次转换 print(df.T) # 再次转换(复位) print(df.T.T)
十一、索引重塑
import pandas as pd # 索引重塑 df = pd.read_excel('/Users/caizhengjie/Desktop/数据1.xlsx') print(df) print(df.stack()) # 复位 print(df.stack().unstack())
十二、长宽表转换
import pandas as pd # 长宽表转换 df = pd.read_excel('/Users/caizhengjie/Desktop/数据3.xlsx') # 打印宽表 print(df) #宽表转换为长表 ''' stack()方法将表格型数据转为树型数据,是在保持行索引不变的前提下,将列索引也变成行索引 ''' # 首先将company和name不变的条件下,将Sale2013 Sale2014 Sale2015 Sale2016变成行索引 # 第一步将将company和name设置为索引 print(df.set_index(['company','Name'])) # 第二步调用stack方法将列索引转换成行索引 print(df.set_index(['company','Name']).stack()) # 第三步用reset_index()方法进行索引重置 print(df.set_index(['company','Name']).stack().reset_index()) # melt()方法实现 print(df.melt(id_vars=['company','Name'],var_name='Year',value_name='Sale'))
十三、apply()与applymap()
import pandas as pd data = {'c1':[1,4,7],'c2':[3,6,9],'c3':[4,7,10]} df = pd.DataFrame(data) print(df) # apply(),将c1列中的每个元素加1 print(df['c1'].apply(lambda x:x+1)) # applymap()对表中的每个元素加一 print(df.applymap(lambda x:x+1))