目录
5.去重:去除重复数据(keep有first、last、False值可选)
摘要:强大的pandas库,函数功能繁多,其中的Dataframe更是有百般神通,基本能满足数据处理的绝大部分要求,值得一学。总结一下的Dataframe的插入、删除重复数据等功能 。
基础创建dataframe
import pandas as pd
df = pd.DataFrame([
[1, 2,'河南','郑州','豫'],
[4, 5,'河北','石家庄','冀'],
[7, 8,'黑龙江省','哈尔滨','黑'],
[9, 10,'甘肃省','兰州','甘/陇'],
[11,12,'云南省','云/滇','昆明']
],
columns =['col1', 'col2','省份','省会','简称'],
index =['A','B','C','D','E']
)
1.列表转dataframe
①.不同的列表a=[1,2,3,4 ], b = [5,6,7,8]转dataframe
import pandas as pd
a=[1,2,3,4] #列表a
b=[5,6,7,8] #列表b
# 转换成dict, key:list
c = {"a": a, "b":b}
data = pd.DataFrame(c)
print(data)
运行结果:
a b
0 1 5
1 2 6
2 3 7
3 4 8
②.内嵌数组 a = [[1,2,3,4], [5,6,7,8]], 转dataframe, 并修改列名
from pandas import DataFrame
a=[[1,2,3,4],[5,6,7,8]]#包含两个不同的子列表[1,2,3,4]和[5,6,7,8]
data=DataFrame(a) #这时候是以行为标准写入的
print(data)
# 修改列名
data.columns = ['a', 'b', 'c', 'd']
# data.columns = ['a':0, 'b':1, 'c':2, 'd':3]
print(data)
运行结果:
# data
0 1 2 3
0 1 2 3 4
1 5 6 7 8
#修改列名后
a b c d
0 1 2 3 4
1 5 6 7 8
2.删除的两种操作,删除NaN的列或行
删除第c行:
# 设置参数axis=0. 参数axis为0表示在0轴(列)上搜索名字为c的对象
data.drop('c',axis=0)
删除cols = a, b列:
# 用drop函数设置参数axis=1. 参数axis为1表示在1轴(行)上搜索名字为col2的对象,然后删除
data.drop('a',axis=1)
#或者
data.drop(['a','b'],axis=1)
删除NaN的列或行
# axis=0,表示行 axis=1,表示列
df.dropna(axis=0,how='all') # 删除表中全部为NaN的行
df.dropna(axis=0,how='any') #删除表中含有任何NaN的行
df.dropna(subset=['name', 'born']) # 删除表中'a','b'列中含NaN的行
df.dropna(thresh=2) # 删除每行至少含2个以上的NaN的行
3.Insert操作
data.insert(0, 'new_col', [6,6])
输出
new_col a b c d
0 6 1 2 3 4
1 6 5 6 7 8
4.Dataframe数据排序问题
# 按cols=a的列的值升序排列
data.sort_index(by = 'a',axis = 0,ascending = True) #按多列排序 by=['a','b','c']
Out[65]:
a b c d
0 1 2 3 4
1 5 6 7 8
5.去重:去除重复数据(keep有first、last、False值可选)
# 去除重复行数据 keep:'first':保留重复行的第一行,'last':保留重复行的最后一行,False:删除所有重复行
df = df.drop_duplicates(
subset=['a','b','c'], # 去重列,按这些列进行去重
keep='first' )# 保存第一条重复数据
6.函数操作:apply
# apply在series或者list上的应用:
data['a'].apply(lambda x:x-10)
out:
a b c d
0 -9 2 3 4
1 -5 6 7 8
7.loc与iloc
简单总结一下:
iloc,即index locate 用index索引进行定位,所以参数是整型,如:df.iloc[10:20, 3:5]
loc,则可以使用column名(列名)和index名(序列名)进行定位,如:
df.loc[‘image1’:‘image10’, ‘age’:‘score’]