搜尋
首頁後端開發Python教學收藏 | 爆肝整理10​​0個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]


6. 資料排序

6.1 重置索引

6.2 依照語言成績升序排序,預設升序排列

##6.3 依照數學成績降序排序

6.4 先依語文成績升序排列,再依數學成績降序排列

6.5 語文成績80以上

###################### #####6.6 語文成績80以上及數學成績90分以上############6.7 語文成績80以上或數學成績90分以上#######

6.8 输出成绩100的行和列号

6.9 增加一列“省份-城市”

6.10 增加一列总分

6.11 按照总分、语文、数学、英语成绩依次排序

6.12 新增一列表示学生语文成绩等级的列(优秀、良好、中等、不及格)
# 6.1 重置索引
df_last = df1.reset_index(drop=True)

# 6.2 按照语文成绩升序排序,默认升序排列
df_last.sort_values('语文')

# 6.3 按照数学成绩降序排序
df_last.sort_values('数学', ascending=False)

# 6.4 先按语文成绩升序排列,再按数学成绩降序排列
df_last.sort_values(['语文','数学'], ascending=[True,False])

# 6.5 语文成绩80及以上
df_last[df_last['语文']>=80]
df_last.query('语文 > 80')

# 6.6 语文成绩80及以上以及数学成绩90分及以上
df_last[(df_last['语文']>=80) & (df_last['数学']>=90)]

# 6.7 语文成绩80及以上或数学成绩90分及以上
df_last[(df_last['语文']>=80) | (df_last['数学']>=90)]

# 6.8 输出成绩100的行和列号
row, col = np.where(df_last.values == 100)

# 6.9 增加一列“省份-城市”
df_last['省份-城市'] = df_last['省份'] + '-' + df_last['城市']

# 6.10 增加一列总分
df_last['总分'] = df_last[['语文','数学','英语']].sum(axis = 1)

# 6.11 按照总分、语文、数学、英语成绩依次排序
df_last.sort_values(by =['总分','语文','数学','英语'],ascending=False )

# 6.12 新增一列表示学生语文成绩等级的列(优秀、良好、中等、不及格)
def get_letter_grade(score):
    '''
    定义一个函数,根据分数返回相应的等级
    '''
    if score>=90:
        return '优秀'
    elif score>=80:
        return '良好'
    elif score>=60:
        return '中等'
    else:
        return '不及格'
    
df_last['语文等级'] = df_last['语文'].apply(lambda score: get_letter_grade(score))


7. 数据分组

7.1 一列分组

7.2 多列分组

7.3 每組的統計資料(橫向顯示)

7.4 每組的統計資料(縱向顯示)

7.5 查看指定列的統計資料

7.6 分組大小

7.7 分組成績最大值

###### #7.8 分組成績最小值############7.9 分組成績總和############7.10 分組平均成績############ 7.11 按省份分組,計算英語成績總分和平均分數#######

7.12 按省份、城市分组计算平均成绩

7.13 不同列不同的计算方法

7.14 性别分别替换为1/0

7.15 增加一列按省份分组的语文平均分

7.16 输出语文成绩最高的男生和女生(groupby默认会去掉空值)

7.17 按列省份、城市进行分组,计算语文、数学、英语成绩最大值的透 视表
# 7.1 一列分组
df2.groupby('省份').groups

# 7.2 多列分组
df2.groupby(['省份','城市']).groups

# 7.3 每组的统计数据(横向显示)
df2.groupby('省份').describe()

# 7.4 每组的统计数据(纵向显示)
df2.groupby('省份').describe().unstack()

# 7.5 查看指定列的统计信息
df2.groupby('省份').describe()['语文']

# 7.6 分组大小
df2.groupby('省份').count()
df2.groupby('省份').agg(np.size)

# 7.7 分组成绩最大值
df2.groupby('省份').max()
df2.groupby('省份').agg(np.max)

# 7.8 分组成绩最小值
df2.groupby('省份').min()
df2.groupby('省份').agg(np.min)

# 7.9 分组成绩总和
df2.groupby('省份').sum()
df2.groupby('省份').agg(np.sum)

# 7.10 分组平均成绩
df2.groupby('省份').mean()
df2.groupby('省份').agg(np.mean)

# 7.11 按省份分组,计算英语成绩总分和平均分
df2.groupby('省份')['英语'].agg([np.sum, np.mean])

# 7.12 按省份、城市分组计算平均成绩
df2.groupby(['省份','城市']).agg(np.mean)

# 7.13 不同列不同的计算方法
df2.groupby('省份').agg({'语文': sum, # 总和
                        '数学': 'count', # 总数
                        '英语':'mean'}) # 平均

# 7.14 性别分别替换为1/0
df2 = df2.dropna()
df2['性别'] = df2['性别'].map({'男':1, '女':0})

# 7.15 增加一列按省份分组的语文平均分
df2['语文平均分'] = df2.groupby('省份')['语文'].transform('mean')

# 7.16 输出语文成绩最高的男生和女生(groupby默认会去掉空值)
def get_max(g):
    df = g.sort_values('语文',ascending=True)
    print(df)
    return df.iloc[-1,:]

df2.groupby('性别').apply(get_max)

# 7.17 按列省份、城市进行分组,计算语文、数学、英语成绩最大值的透 视表
df.pivot_table(index=['省份','城市'], values=['语文','数学','英语'], aggfunc=max)


8. 資料統計

8.1 資料總合統計

8.2 欄位中非空值的數量

8.3 欄位最小值

#8.4 列最大值

8.5 列平均數

##8.6 欄位中位數

# ######8.7 列與列之間的相關係數#######

8.8 列的标准差

8.9 语文成绩指标

8.10 三个科目的指标
# 8.1 数据汇总统计
df.describe()

# 8.2 列中非空值的个数
df.count()

# 8.3 列最小值
df.min()

# 8.4 列最大值
df.max()

# 8.5 列均值
df.mean()

# 8.6 列中位数
df.median()

# 8.7 列与列之间的相关系数
df.corr()

# 8.8 列的标准差
df.std()

# 8.9 语文成绩指标
# 对语文列求和
sum0 = df_last['语文'].sum()
# 语文成绩方差
var = df_last['语文'].var()
# 语文成绩标准差
std = df_last['语文'].std()
# 语文平均分
mean = df_last['语文'].mean()

print('语文总分:',sum0)
print('语文平均分:',mean)
print('语文成绩标准差:',std)
print('语文成绩方差:',var)

# 8.10 三个科目的指标
mean = df_last[['语文','数学','英语']].mean()
var  = df_last[['语文','数学','英语']].var()
total = df_last[['语文','数学','英语']].sum()
std = df_last[['语文','数学','英语']].std()
rows = [total,mean,var,std]
# 索引列表
index = ['总分','平均分','方差','标准差']
# 根据指定索引和行构造 DataFrame 对象
df_tmp = pd.DataFrame(rows,index=index)


9. 表格样式

9.1 示例数据

9.2 列重命名

9.3 设置空值背景红色

9.4 最大資料高亮

9.5 最小資料高亮

9.6 部分列最大資料高亮

#9.7 部分列資料高亮(Dataframe全為資料)

#9.8 95分以上顯示紅色

#9.9 混合

9.10 設定float型別列資料大於80.0的背景高亮

9.11 設定數學成績大於80.0分的行背景高明亮

9.12 設定數學成績大於95.0的行資料顏色為紅色

9.13 显示热度图
# 9.1 示例数据
df = pd.read_csv(filename, encoding='gbk')

# 9.2 列重命名
df.columns = ['姓名','性别','语文','数学','英语','城市','省份']

# 9.3 设置空值背景红色
df.style.highlight_null(null_color = 'red')

# 9.4 最大数据高亮
df.style.highlight_max()

# 9.5 最小数据高亮
df.style.highlight_min()

# 9.6 部分列最大数据高亮
df.style.apply(highlight_max, subset=['语文', '数学'])

# 9.7 部分列数据高亮(Dataframe全为数据)
df3 = df[['语文','数学','英语']]
def highlight_max(s):
    is_max = s == s.max()
    return ['background-color: yellow' if v else '' for v in is_max]

df3.style.apply(highlight_max)

# 9.8 95分以上显示红色
def color_negative_red(val):
    color = 'red' if val > 95.0 else 'black'
    return 'color: %s' % color

df3.style.applymap(color_negative_red)

# 9.9 混合
df3.style.applymap(color_negative_red).apply(highlight_max)

# 9.10 设置float类型列数据大于80.0的背景高亮
yellow_css = 'background-color: yellow'
sfun = lambda x: yellow_css if type(x) == float and x > 80.0 else ''
df3.style.applymap(sfun)

# 9.11 设置数学成绩大于80.0分的行背景高亮
yellow_css = 'background-color: yellow'
sfun = lambda x: [yellow_css]*len(x) if x.数学 > 80.0 else ['']*len(x)
df3.style.apply(sfun, axis=1)

# 9.12 设置数学成绩大于95.0的行数据颜色为红色
def row_color(s):
    if s.数学 > 95:
        return ['color: red']*len(s)
    else:
        return ['']*len(s)

df3.style.apply(row_color, axis=1)

# 9.13 显示热度图
import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
df3.style.background_gradient(cmap=cm)

以上是收藏 | 爆肝整理10​​0個Pandas常用基礎指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:Python当打之年。如有侵權,請聯絡admin@php.cn刪除
Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用