大家好,我是欧K。
本期为大家带来Pandas常用操作命令介绍的第二篇,主要介绍pandas的数据切片、筛选部分常用到一些指令,本系列会不断进行补充更新,希望对你有所帮助。
上一篇👉:Pandas常用操作命令(一)
3. 数据清洗
示例数据:
以test.csv文件为例:
filename = 'test.csv' df = pd.read_csv(filename, encoding='gbk') df
# 重命名列 df.columns = ['姓名','性别','语文','数学','英语','城市','省份']
3.16 强制转换数据类型
df_t1 = df.dropna() df_t1['语文'].astype('int')
注意空值不进行转换。
3.17 查看有多少不同的城市
df['城市'].unique()
array(['南京', '广州', '上海', '海口', '深圳', '重庆', nan, '杭州', '宁波', '苏州'],
dtype=object)
3.18 单值替换(整个表格替换)
将苏州替换为南京:
df.replace('苏州', '南京')
3.19 多值替换
将苏州替换为南京、广州替换成深圳:
# 方法一 df.replace({'苏州':'南京','广州':'深圳'}) # 方法二 df.replace(['苏州','广州'],['南京','深圳'])
3.20 多值替换单值
将广州和深圳替换为东莞:
df.replace(['深圳','广州'],'东莞')
3.21 替换某列中的值(单列替换)
df['城市'] = df['城市'].replace('海口', '三亚')
3.22 拆分某列,生成新的Dataframe
将姓名列拆分为学号列和姓名列:
df1 = df['姓名'].str.split('-',expand=True) df1.columns = ['学号','姓名'] df1['性别'] = df['性别'] df1['语文'] = df['语文'] df1['数学'] = df['数学'] df1['英语'] = df['英语'] df1['城市'] = df['城市'] df1['省份'] = df['省份'] df1
3.23 某一列类型转换,注意该列类型要一致,包括(NaN)
df1.dropna(inplace = True) df1['语文'] = df1['语文'].apply(int) df1
4. 数据切片、筛选
4.1 输出城市为上海的行
df[df['城市']=='上海']
4.2 输出城市为上海或广州的行
df[df['城市'].isin(['上海','广州'])]
4.3 输出城市名称中含有‘海’字的行
df[df['城市'].str.contains("海", na=False)]
4.4 输出城市名称以‘海’字开头的行
df[df['城市'].str.startswith("海", na=False)]
4.5 输出城市名称以‘海’字结尾的行
df[df['城市'].str.endswith("海", na=False)]
4.6 输出所有姓名,缺失值用Null填充
df['姓名'].str.cat(sep='、',na_rep='Null')
'001-张三、002-李四、003-赵四、004-王五、005-陈六、006-孙五、007-周七、Null、009-王二、010-刘八、011-郑九、012-赵十、013-郭一'
4.7 重置索引
df2 = df1.set_index('学号') df2
4.8 前两行
df2[:2]
4.9 后两行
df2[-2:]
4.10 2-8行
df2[2:8]
4.11 每隔3行读取
df2[::3]
4.12 2-8行,步长为2,即第2/4/6行
df2[2:8:2]
4.13 选取'语文','数学','英语'列
df2[['语文','数学','英语']]
4.14 学号为'001'的行,所有列
df.loc只能使用标签索引,不能使用整数索引,通过便签索引切边进行筛选时,前闭后闭.
df2.loc['001', :]
4.15 学号为'001'或'003'的行,所有列
df2.loc[['001','003'], :]
4.16 学号为'001'至'009'的行,所有列
df2.loc['001':'009', :]
4.17 列索引为'姓名',所有行
df2.loc[:, '姓名']
4.18 列索引为'姓名'至‘城市’,所有行
df2.loc[:, '姓名':'城市']
4.19 语文成绩大于80的行
# 方法一 df2.loc[df2['语文']>80,:] # 方法二 df2.loc[df2.loc[:,'语文']>80, :] # 方法三 df2.loc[lambda df2:df2['语文'] > 80, :]
4.20 语文成绩大于80的人的姓名和城市
df2.loc[df2['语文']>80,['姓名','城市']]
4.21 输出'赵四'和'周七'的各科成绩
df2.loc[df2['姓名'].isin(['赵四','周七']),['姓名','语文','数学','英语']]
df.iloc[]只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时,前闭后开4.22 iloc选取第2行
df2.iloc[1, :]
4.23 iloc选取前3行
df2.iloc[:3, :]
4.24 选取第2行、第4行、第6行
df2.iloc[[1,3,5],:]
4.25 选取第2列
df2.iloc[:, 1]
4.26 选取前3列
df2.iloc[:, :3]
4.27 选取第3行的第3列
df2.iloc[3, 3]
4.28 选取第1列、第3列和第4列
df2.iloc[:, [0,2,3]]
4.29 选取第2行的第1列、第3列、第4列
df2.iloc[1, [0,2,3]]
4.30 选取前3行的前3列
df2.iloc[:3, :3]
未完待续。。。
END
以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道。
下期预告:pandas排序、分组、统计