123个Pandas常用基础指令,真香!(上)

简介: 123个Pandas常用基础指令,真香!

大家好,我是欧K。本期是对pandas常用操作指令的一个总结,主要涉及读取数据和保存数据数据详情信息数据处理数据切片筛选排序分组统计表格样式等几部分内容希望对你有所帮助。
往期相关:
Pandas常用操作命令(一)
Pandas常用操作命令(二)Pandas常用操作命令(三)Pandas常用操作命令(四)


1. 导入模块

import pandas as pd
import numpy as np

2. 读取数据和保存数据

2.1 从CSV文件读取数据,编码'gbk'

2.2 读取前6行,当数据量比较大时,可以只读取前n行2.3 第一列作为行索引,忽略列索引2.4 读取时忽略第1/3/5行和最后两行2.5 从限定分隔符(',')的文件或文本读取数据

2.6 保存数据

# 2.1 从CSV文件读取数据,编码'gbk'
pd.read_csv(filename, encoding='gbk')
# 2.2 读取前6行,当数据量比较大时,可以只读取前n行
pd.read_csv(filename, encoding='gbk', nrows = 6)
# 2.3 第一列作为行索引,忽略列索引
pd.read_csv(filename, encoding='gbk', header=None, index_col=0)
# 2.4 读取时忽略第1/3/5行和最后两行
pd.read_csv(filename, encoding='gbk', skiprows=[1,3,5], skipfooter=2, engine='python')
# 2.5 从限定分隔符(',')的文件或文本读取数据
pd.read_table(filename, sep=',', encoding='gbk')
# 2.6 保存数据
# 保存为csv文件
df.to_csv('test_ison.csv')
# 保存为xlsx文件
df.to_excel('test_xlsx.xlsx',index=False)
# 保存为ison文件
df.to_json('test_json.txt')

3. 查看数据信息

3.1 查看前n行

3.2 查看后n行3.3 查看行数和列数3.4 查看列索引3.5 查看行索引3.6 查看索引、数据类型和内存信息

3.7 查看数值型列的汇总统计

3.8 查看每一列的唯一值和计数

# 3.1 查看前n行
df.head(3)
# 3.2 查看后n行
df.tail(3)
# 3.3 查看行数和列数
df.shape
# 3.4查看列索引
df.columns
# 3.5 查看行索引
df.index
# 3.6 查看索引、数据类型和内存信息
df.info()
# 3.7 查看数值型列的汇总统计
df.describe()
# 3.8 查看每一列的唯一值和计数
df.apply(pd.Series.value_counts)


4. 数据处理

4.1 重命名列名

4.2 选择性更改列名

4.3 批量更改索引

4.4 批量更改列名

4.5 设置姓名列为行索引

4.6 检查哪些列包含缺失值

4.7 统计各列空值

4.8 删除本列中空值的行

4.9 仅保留本列中是空值的行

4.10 去掉某行

4.11 去掉某列

4.12 删除所有包含空值的行

4.13 删除行里全都是空值的行

4.14 删除所有包含空值的列

4.15 保留至少有6个非空值的行

4.16 保留至少有11个非空值的列

4.17 行数据向下填充

4.18 列数据向右填充

4.19 用0替换所有的空值

4.20 强制转换数据类型

4.21 查看有多少不同的城市

4.22 单值替换

4.23 多值替换

4.24 多值替换单值

4.25 替换某列,显示需要加inplace=True

4.26 拆分某列,生成新的Dataframe

4.27 某一列类型转换,注意该列类型要一致,包括(NaN)

# 4.1 重命名列名
df.columns = ['姓名','性别','语文','数学','英语','城市','省份']
# 4.2 选择性更改列名
df.rename(columns={'姓名': '姓--名','性别': '性--别'},inplace=True)
# 4.3 批量更改索引
df.rename(lambda x: x + 10)
# 4.4 批量更改列名
df.rename(columns=lambda x: x + '_1')
# 4.5 设置姓名列为行索引
df.set_index('姓名')
# 4.6 检查哪些列包含缺失值
df.isnull().any()
# 4.7 统计各列空值
df.isnull().sum()
# 4.8 删除本列中空值的行
df[df['数学'].notnull()]
df[~df['数学'].isnull()]
# 4.9 仅保留本列中是空值的行
df[df['数学'].isnull()]
df[~df['数学'].notnull()]
# 4.10 去掉某行
df.drop(0, axis=0)
# 4.11 去掉某列
df.drop('英语', axis=1)
# 4.12 删除所有包含空值的行
df.dropna()
# 4.13 删除行里全都是空值的行
df.dropna(how = 'all')
# 4.14 删除所有包含空值的列
df.dropna(axis=1)
# 4.15 保留至少有6个非空值的行
df.dropna(thresh=6)
# 4.16 保留至少有11个非空值的列
df.dropna(axis=1,thresh=11)
# 4.17 行数据向下填充
df.fillna(method = 'ffill')
# 4.18 列数据向右填充
df.fillna(method = 'ffill',axis=1)
# 4.19 用0替换所有的空值
df.fillna(0)
# 4.20 强制转换数据类型
df_t1 = df.dropna()
df_t1['语文'].astype('int')
# 4.21 查看有多少不同的城市
df['城市'].unique()
# 4.22 单值替换
df.replace('苏州', '南京')
# 4.23 多值替换
df.replace({'苏州':'南京','广州':'深圳'})
df.replace(['苏州','广州'],['南京','深圳'])
# 4.24 多值替换单值
df.replace(['深圳','广州'],'东莞')
# 4.25 替换某列,显示需要加inplace=True
df['城市'] = df['城市'].replace('苏州', '南京')
# 4.26 拆分某列,生成新的Dataframe
df1 = df['姓名'].str.split('-',expand=True)
df1.columns = ['学号','姓名']
# 4.27 某一列类型转换,注意该列类型要一致,包括(NaN)
df1.dropna(inplace = True)
df1['语文'] = df1['语文'].apply(int)

5. 数据切片、筛选

5.1 输出城市为上海

5.2 输出城市为上海或广州

5.3 输出城市名称中含有‘海’字的行

5.4 输出城市名称以‘海’字开头的行

5.5 输出城市名称以‘海’字结尾的行

5.6 输出所有姓名,缺失值用Null填充

5.7 重置索引

5.8 前两行

5.9 后两行

5.10 2-8行

5.11 每隔3行读取

5.12 2-8行,步长为2,即第2/4/6行

5.13 选取'语文','数学','英语'列

5.14 学号为'001'的行,所有列

5.15 学号为'001'或'003'的行,所有列

5.16 学号为'001'至'009'的行,所有列

5.17 列索引为'姓名',所有行

5.18 列索引为'姓名'至‘城市’,所有行

5.19 语文成绩大于80的行

5.20 语文成绩大于80的人的学号和姓名

5.21 输出'赵四'和'周七'的各科成绩

5.22 选取第2行

5.23 选取前3行

5.24 选取第2行、第4行、第6行

5.25 选取第2列

5.26 选取前3列

5.27 选取第3行的第3列

5.28 选取第1列、第3列和第4列

5.29 选取第2行的第1列、第3列、第4列

5.30 选取前3行的前3列

# 5.1 输出城市为上海
df[df['城市']=='上海']
# 5.2 输出城市为上海或广州
df[df['城市'].isin(['上海','广州'])]
# 5.3 输出城市名称中含有‘海’字的行
df[df['城市'].str.contains("海", na=False)]
# 5.4 输出城市名称以‘海’字开头的行
df[df['城市'].str.startswith("海", na=False)]
# 5.5 输出城市名称以‘海’字结尾的行
df[df['城市'].str.endswith("海", na=False)]
# 5.6 输出所有姓名,缺失值用Null填充
df['姓名'].str.cat(sep='、',na_rep='Null')
# 5.7 重置索引
df2 = df1.set_index('学号')
# 5.8 前两行
df2[:2]
# 5.9 后两行
df2[-2:]
# 5.10 2-8行
df2[2:8]
# 5.11 每隔3行读取
df2[::3]
# 5.12 2-8行,步长为2,即第2/4/6行
df2[2:8:2]
# 5.13 选取'语文','数学','英语'列
df2[['语文','数学','英语']]
# df.loc[]只能使用标签索引,不能使用整数索引,通过便签索引切边进行筛选时,前闭后闭
# 5.14 学号为'001'的行,所有列
df2.loc['001', :]
# 5.15 学号为'001'或'003'的行,所有列
df2.loc[['001','003'], :]
# 5.16 学号为'001'至'009'的行,所有列
df2.loc['001':'009', :]
# 5.17 列索引为'姓名',所有行
df2.loc[:, '姓名']
# 5.18 列索引为'姓名'至‘城市’,所有行
df2.loc[:, '姓名':'城市']
# 5.19 语文成绩大于80的行
df2.loc[df2['语文']>80,:]
df2.loc[df2.loc[:,'语文']>80, :]
df2.loc[lambda df2:df2['语文'] > 80, :]
# 5.20 语文成绩大于80的人的学号和姓名
df2.loc[df2['语文']>80,['姓名','城市']]
# 5.21 输出'赵四'和'周七'的各科成绩
df2.loc[df2['姓名'].isin(['赵四','周七']),['姓名','语文','数学','英语']]
# # df.iloc[]只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时,前闭后开
# 5.22 选取第2行
df2.iloc[1, :]
# 5.23 选取前3行
df2.iloc[:3, :]
# 5.24 选取第2行、第4行、第6行
df2.iloc[[1,3,5],:]
# 5.25 选取第2列
df2.iloc[:, 1]
# 5.26 选取前3列
df2.iloc[:, 0:3]
# 5.27 选取第3行的第3列
df2.iloc[3, 3]
# 5.28 选取第1列、第3列和第4列
df2.iloc[:, [0,2,3]]
# 5.29 选取第2行的第1列、第3列、第4列
df2.iloc[1, [0,2,3]]
# 5.30 选取前3行的前3列
df2.iloc[:3, :3]
相关文章
|
10月前
|
BI 数据处理 索引
收藏 | 爆肝整理100个Pandas常用基础指令
收藏 | 爆肝整理100个Pandas常用基础指令
|
10月前
|
BI 索引 Python
123个Pandas常用基础指令,真香!(下)
123个Pandas常用基础指令,真香!(下)
|
18天前
|
SQL 数据采集 数据可视化
使用Python Pandas实现两表对应列相加(即使表头不同)
使用Python Pandas实现两表对应列相加(即使表头不同)
36 3
|
3天前
|
数据采集 SQL 数据处理
Python中的Pandas库:数据处理与分析的利器
Python中的Pandas库:数据处理与分析的利器
16 0
|
4天前
|
数据采集 数据挖掘 数据处理
Python数据分析实战:使用Pandas处理Excel文件
Python数据分析实战:使用Pandas处理Excel文件
74 0
|
4天前
|
数据采集 数据可视化 数据处理
Python中的高效数据处理:Pandas库详解
Python中的高效数据处理:Pandas库详解
24 2
|
4天前
|
数据采集 SQL 数据可视化
使用Python和Pandas库进行数据分析的入门指南
使用Python和Pandas库进行数据分析的入门指南
68 0
|
4天前
|
数据采集 SQL 存储
使用Python和Pandas进行数据分析
使用Python和Pandas进行数据分析
18 0
|
7天前
|
存储 分布式计算 数据处理
使用Python和Pandas处理大型数据集的高效策略
随着大数据时代的到来,处理大型数据集已成为数据分析师和数据科学家的日常任务。本文旨在探讨如何使用Python的Pandas库高效地处理大型数据集。不同于常规的数据处理教程,本文将重点介绍数据子集化、内存优化、并行处理和数据压缩等高级策略,帮助读者在资源受限的环境中快速且准确地分析大量数据。
|
7天前
|
数据采集 数据挖掘 Serverless
利用Python和Pandas库优化数据清洗流程
在数据分析项目中,数据清洗是至关重要的一步。传统的数据清洗方法往往繁琐且易出错。本文将介绍如何利用Python编程语言中的Pandas库,通过其强大的数据处理能力,实现高效、自动化的数据清洗流程。我们将探讨Pandas库在数据清洗中的应用,包括缺失值处理、重复值识别、数据类型转换等,并通过一个实际案例展示如何利用Pandas优化数据清洗流程,提升数据质量。