普通索引:传入具体索引的名称,常用loc函数。
位置索引:传入具体索引的行数或列数,常用iloc函数。
loc函数主要通过行标签索引行数据,划重点,标签!标签!标签!
iloc 主要是通过行号获取行数据,划重点,序号!序号!序号!
df[list]
df.iloc[:,[0,2]]
df[list]
df.iloc[:,[0:2]]
df.loc[list]
df.loc[[0,2]]
df.loc[list]
df.iloc[0:2]
比如我们想在表中筛选年龄大于20的女生的信息:df[(df.年龄>20)&(df.性别='女')]
df.loc[['行索引名称'],[列索名称]]
df.iloc[[0,2],0,2]]
df[df.年龄>20].loc[列索名称]
df.iloc[0:2,1:2]
df[df.年龄>20].loc[列索名称]
df.ix[0:2,'列索名称']
数值替换就是将A 换成B,可以用在异常值替换处理、缺失值替换处理中,主要有一对一替换,多对一替换,多对多替换。
df.replace(np.NAN,0)
df.replace([230,130,200],100)
df.replace({传入字典})
df.sort_values(by=['列名1'],ascending=False)
df.sort_values(by=['列名1'],na_position='first')
df.sort_values(by=['列名1','列名2'],ascending=[True,False])
数值排名和数值排序是相对应的,排名会新增一列,这一列用来存放数据的排名情况,排名是从1开始的。
-rank(ascending,method),ascending说明升降序,method指明待排序值有重复值的处理情况
按列名 df.drop(列名列表)
按位置 df.drop(df.columns[[4,5]],axis=1)
按列名 df.drop(行名列表)
按位置 df.drop(df.index[[4,5]],axis=0)
df[df.年龄<=40]
数值计数就是计算某个值在一系列数值中出现的次数。
# 计算不同值出现的次数
# ID=[1,2,1,2,3]
df['ID'].value_counts()
#2 2
#1 2
#3 1
# 计算不同值出现的占比,并按ID的计数值降序
df['ID'].value_counts(normalize=True,sort=False)
#2 0.4
#1 0.4
#3 0.2
唯一值获取就是把某一系列值删除重复项以后的结果。
思路1:单独取出这一列,并用删除重复项的办法。
思路2:使用unique(),对ID 获取唯一值,df['ID'].unique()
数值查找就是查看数据表中的数据是否包含某个/些值。
df['ID'].isin([23,12])
df.isin([23,12])
区间切分就是将一系列的数值分成若干份,比如现在你有10个人,你要根据这10个人的年龄将他们分成3组,这个过程就是区间切分。python中实现用下面两种方法,当数据分布较均匀,两种方法得到的区间基本一致,当数据分布不均匀时,即方差比较大时,两者得到的区间的偏差就会比较大。
df.insert(2,'商品',['A','B','C'])
df['商品']=['A','B','C']
添加一列: df[‘列名1’]=0/或者其他默认值
添加多列分为两种情况:
# 一次性添加多列并有数据
"依次添加列并有数据"
# 实现将me
result=medata[['ID_1','项目']]
result=result.drop_duplicates( keep='first')
cols1=['ID_1','项目']+["{}".format(i) for i in range(7, 9]
# 添加多个列名
result=result.reindex(columns=cols1, fill_value=np.nan)
# 添加数据
# 将月份一列转换多列
for i in range(1,dt.today().month+1):
medata1=medata.loc[medata['月'] == i]
medata1=medata1.rename(columns={
'成本':("{}月").format(i)})
medata1=medata1.drop('月',axis=1)
result=pd.merge(result,medata1,how='left')
df.T即可。
python中的map()函数是对一个序列中的所有元素执行相同的函数操作。
在DtaFrame中与map()函数类似的有两个:apply(),applymap(),但是两者都需要与匿名函数lambda()结合使用。
# 表中的ID列加1
df['ID'].apply(lambda x:x+1)
# 表中的每一个元素加1
df.applymap(lambda x:x+1)
df.[]+/-/*/df.[]
df.[]+/-/*/a
非空值计算就是计算某一个区域非空(单元格)数值的个数。
# 求每列非空值得个数
df.count()
# 求每行非空值得个数
df.count(axis=1)
# 或者把某一行/列得索引写出来,看行/列得非空值个数
df.['ID'].count()
# 计算整个表每一列
df.sum()
# 计算整个表每一行
df.sum(axis=1)
# 或者把某一行/列得索引写出来,看行/列得和
df.['ID'].sum()
# 计算整个表每一列
df.mean()
# 计算整个表每一行
df.mean(axis=1)
# 或者把某一行/列得索引写出来,看行/列的均值
df.['ID'].mean()
使用方式与上面三种类似。
# 计算整个表的四分之一分位数
df.quantile(0.25)
# 计算整个表每一行的二分之一分位数
df.quantile(0.5,axis=1)
# 或者把某一行/列得索引写出来,计算某一列/行的分位数
df.['ID'].quantile(0.25)
相关性用来衡量两个事物之间的相关程度。
求列名1与列名2的相关性系数(一个值)
df.['列名1'].corr(df.['列名2'])
# 求整个表各字段两两之间的相关性,返回的大小与原表大小一致。
df.corr()