Pandas库入门基础知识

Python中标准库学习笔记

一、os库

1.获取当前的文件相对路径——os.getcwd()

import os
path = os.getcwd()
print(path)
/Users/jackeroo

2.列出指定路径下的文件夹包含的文件和子文件名称——os.listdir()

import os
path = '/Users/jackeroo/Downloads'
file_list = os.listdir(path)
for file in file_list:
    print(file)
.DS_Store
.localized
2021中国物流科技发展报告-罗戈研究-2021-247页.pdf
2020哔哩哔哩流量生态白皮书-蓝鲸浑水-2020.12-95页.pdf
Compressor_4.5.2_MAS__TNT_Torrentmac.net.dmg
一般零售行业深度研究:海外电商渗透率提升&中国产品能力提升推动跨境电商行业快速发展,看好中国制造的品牌化出海机会-20210127-天风证券-21页.pdf
ripro.zip
Motion_5.5.1_MAS__TNT_Torrentmac.net.dmg
一网互通&Morketing-2020Q4《BrandOS TOP 100出海品牌社交平台表现力白皮书》.pdf
Adobe_Lightroom_Claccic_v10.1.1__TNT_Torrentmac.net.dmg
Final_Cut_Pro_10.5.2_MAS__TNT_Torrentmac.net.dmg

3.分离文件名和扩展名——splitext()

import os 
path = '2021中国物流科技发展报告-罗戈研究-2021-247页.pdf'
separate = os.path.splitext(path)
print(separate)   #打印出来的结果是一个元组
('2021中国物流科技发展报告-罗戈研究-2021-247页', '.pdf')

4.重命名文件和文件夹——os.rename(src,dst)

import os
'''
oldname = '/Users/jackeroo/Downloads/2021中国物流科技发展报告-罗戈研究-2021-247页.pdf'
newname = '/Users/jackeroo/Downloads/2021中国物流科技发展报告-罗戈研究(共247页).pdf'
os.rename(oldname,newname)
'''
#改名后打印该文件夹下的所有文件名和文件夹名称
path = '/Users/jackeroo/Downloads'
file_list = os.listdir(path)
for file in file_list:
    print(file)
.DS_Store
.localized
2020哔哩哔哩流量生态白皮书-蓝鲸浑水-2020.12-95页.pdf
2021中国物流科技发展报告-罗戈研究(共247页).pdf
Compressor_4.5.2_MAS__TNT_Torrentmac.net.dmg
一般零售行业深度研究:海外电商渗透率提升&中国产品能力提升推动跨境电商行业快速发展,看好中国制造的品牌化出海机会-20210127-天风证券-21页.pdf
ripro.zip
Python标准库学习笔记.md
Motion_5.5.1_MAS__TNT_Torrentmac.net.dmg
一网互通&Morketing-2020Q4《BrandOS TOP 100出海品牌社交平台表现力白皮书》.pdf
Adobe_Lightroom_Claccic_v10.1.1__TNT_Torrentmac.net.dmg
Final_Cut_Pro_10.5.2_MAS__TNT_Torrentmac.net.dmg

5. 遍历目录树——os.walk()

import os
turples = os.walk('/Users/jackeroo/Downloads')
for turple in turples:
    print(turple,'\n')
('/Users/jackeroo/Downloads', ['Compressor_4.5.2_MAS__TNT_Torrentmac.net.dmg', 'Motion_5.5.1_MAS__TNT_Torrentmac.net.dmg', 'Adobe_Lightroom_Claccic_v10.1.1__TNT_Torrentmac.net.dmg', 'Final_Cut_Pro_10.5.2_MAS__TNT_Torrentmac.net.dmg'], ['.DS_Store', '.localized', '2020哔哩哔哩流量生态白皮书-蓝鲸浑水-2020.12-95页.pdf', '2021中国物流科技发展报告-罗戈研究(共247页).pdf', '一般零售行业深度研究:海外电商渗透率提升&中国产品能力提升推动跨境电商行业快速发展,看好中国制造的品牌化出海机会-20210127-天风证券-21页.pdf', 'ripro.zip', 'Python标准库学习笔记.md', '一网互通&Morketing-2020Q4《BrandOS TOP 100出海品牌社交平台表现力白皮书》.pdf']) 

('/Users/jackeroo/Downloads/Compressor_4.5.2_MAS__TNT_Torrentmac.net.dmg', [], ['Compressor_4.5.2_MAS__TNT_Torrentmac.net.dmg', '.Compressor_4.5.2_MAS__TNT_Torrentmac.net.dmg.torrent', '.FCAC973451BE0665667606FA9ACBC16C2F00C059.js']) 

('/Users/jackeroo/Downloads/Motion_5.5.1_MAS__TNT_Torrentmac.net.dmg', [], ['.Motion_5.5.1_MAS__TNT_Torrentmac.net.dmg.torrent', '.F4103F724FE77E0C2D32E90EFE64AAE3D44D69C4.js', 'Motion_5.5.1_MAS__TNT_Torrentmac.net.dmg']) 

('/Users/jackeroo/Downloads/Adobe_Lightroom_Claccic_v10.1.1__TNT_Torrentmac.net.dmg', [], ['.Adobe_Lightroom_Claccic_v10.1.1__TNT_Torrentmac.net.dmg.torrent', '.827340191E04AE89F99ABE992F07B4AD0BB88293.js', 'Adobe_Lightroom_Claccic_v10.1.1__TNT_Torrentmac.net.dmg']) 

('/Users/jackeroo/Downloads/Final_Cut_Pro_10.5.2_MAS__TNT_Torrentmac.net.dmg', [], ['.Final_Cut_Pro_10.5.2_MAS__TNT_Torrentmac.net.dmg.torrent', '.73149C61818436FDF6E7ED3EE61B8288BC60F6C9.js', 'Final_Cut_Pro_10.5.2_MAS__TNT_Torrentmac.net.dmg']) 

6.获取系统中的CPU数量——cpu_count()

print(os.cpu_count())  #获取CPU的核心数量
8
print(os.getlogin()) #获取登录系统的用户名
jackeroo
print(os.getpid())   #获取当前进程ID
1457
print(os.getppid())  #获取父进程id
1442
print(os.popen(r'/Users/jackeroo/Downloads/2021中国物流科技发展报告-罗戈研究(共247页).pd','r'))
<os._wrap_close object at 0x7fa05af8c7c0>
import os
times = os.times()
print(times)
print('用户时间',times.user)
print('系统时间',times.system)
print('所有子进程的用户时间',times.children_user)
posix.times_result(user=1.04, system=0.61, children_user=0.0, children_system=0.0, elapsed=1615040006.69)
用户时间 1.04
系统时间 0.61
所有子进程的用户时间 0.0

二、Pandas库

1.使用pandas打开Excel文件——pd.read_excel()

个人理解:Series是一维数组,DataFrame是二维数组,两者共同组成了Pandas的两大数据类型

import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width',True)
df = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/01/data.xlsx')
print(df.head())
   排名      球员      球队 进球(点球)  出场次数  出场时间  射门  射正
0     1    瓦尔迪    莱斯特        17(3)        20      1800    49    29
1     2      英斯  南安普敦           14        22      1537    57    26
2     3  奥巴梅扬    阿森纳        14(1)        22      1945    55    22
3     4  拉什福德      曼联        14(5)        22      1881    74    34
4     5  亚伯拉罕    切尔西           13        21      1673    66    29

2. Series标签及索引

import pandas as pd
s1 = pd.Series([88,66,78,88+66+78],index=['语文','数学','英语','总分'])
print(s1)
print(s1['总分'])
print(s1['英语'])
print(s1[3])
print(s1[1:2])
print(s1.index)
print(s1.values)
语文     88
数学     66
英语     78
总分    232
dtype: int64
232
78
232
数学    66
dtype: int64
Index(['语文', '数学', '英语', '总分'], dtype='object')
[ 88  66  78 232]

3.DataFrame对象

import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
#通过二维数组创建DataFrame对象
data = [[110,115,123],[107,132,88],[109,120,130]]
index = ['王婷','刘涛','孙浩']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=index,columns=columns)
print(df)
3.1通过二维数组创建DataFrame对象
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True) 
data = [[110,115,123],[107,132,88],[109,120,130]]
index = ['王婷','刘涛','孙浩']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=index,columns=columns)
print(df)
      语文  数学  英语
王婷   110   115   123
刘涛   107   132    88
孙浩   109   120   130
3.2 通过字典创建DataFrame对象
#通过字典创建DataFrame对象
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
df = pd.DataFrame(
    {
        '语文':[110,123,114],
        '数学':[120,88,132],
        '英语':[109,120,130],
        '班级':'高一17班'
    },index=['王健','刘莉','孙婕']
)
print(df)
      语文  数学  英语      班级
王健   110   120   109  高一17班
刘莉   123    88   120  高一17班
孙婕   114   132   130  高一17班
3.3 使用Series对象创建DataFrame对象
from pandas import Series,DataFrame
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = {
    '水果':Series(['苹果🍎','香蕉🍌','梨🍐']),
    '数量':Series([12,5,6]),
    '价格':Series([3,2.3,5.1])
}
df = DataFrame(data=data)
print(df)
     水果  数量  价格
0  苹果🍎    12   3.0
1  香蕉🍌     5   2.3
2    梨🍐     6   5.1
3.4 使用包含列表的字典创建DataFrame对象
from pandas import Series,DataFrame
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = {
    '水果种类':['香蕉🍌','草莓🍓','橘子🍊'],
    '购买数量':[5,12,9],
    '参考价格':[4,6,3]
}
df = DataFrame(data=data)
print('需要购买的水果有:')
print(df)
需要购买的水果有:
  水果种类  购买数量  参考价格
0   香蕉🍌         5         4
1   草莓🍓        12         6
2   橘子🍊         9         3
3.5 使用嵌套字典创建DataFrame对象
from pandas import Series,DataFrame
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data ={
    '数量':{'苹果🍎':3,'梨🍐':5,'草莓🍓':6},
    '价格':{'苹果🍎':10,'梨🍐':8,'草莓🍓':3}
}
df = DataFrame(data=data)
print(df)
        数量  价格
苹果🍎     3    10
梨🍐       5     8
草莓🍓     6     3
3.6 使用pandas导入外部Excel数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
df = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/12/1月.xlsx')
print(df.head())
  买家会员名  买家实际支付金额 收货人姓名            宝贝标题
0      mrhy1             41.86     周某某      零基础学Python
1      mrhy2             41.86     杨某某      零基础学Python
2      mrhy3             48.86     刘某某      零基础学Python
3      mrhy4             48.86     张某某      零基础学Python
4      mrhy5             48.86     赵某某  C#项目开发实战入门
3.6.1 使用pandas导入指定的Sheet页的数据
import pandas as pd
#使用pandas导入指定的Sheet页的数据
pd.set_option('display.unicode.east_asian_width',True)
df = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/13/1月.xlsx',sheet_name='莫寒')
print(df.head())
   买家会员名 买家支付宝账号  买家实际支付金额  订单状态 收货人姓名  \
0  mmbooks101       ********             41.86  交易成功     赵某人   
1  mmbooks102       ********             41.86  交易成功     李某某   
2  mmbooks103       ********             48.86  交易成功     高某某   
3  mmbooks104       ********             48.86  交易成功     高某某   
4  mmbooks105       ********             48.86  交易成功     高某某   

                               收货地址     联系手机        订单创建时间  \
0                  贵州省 贵阳市 花溪区  1********** 2018-05-16 09:38:00   
1  新疆维吾尔自治区 乌鲁木齐市 水磨沟区  1********** 2018-05-09 15:31:00   
2    云南省 红河哈尼族彝族自治州 开远市  1********** 2018-05-25 15:21:00   
3    云南省 红河哈尼族彝族自治州 开远市  1********** 2018-05-14 20:21:00   
4    云南省 红河哈尼族彝族自治州 开远市  1********** 2018-05-22 18:47:00   

        订单付款时间                  宝贝标题  宝贝种类          物流单号  \
0 2018-05-16 09:41:00  Android项目开发实战入门          1  No:221307653963   
1 2018-05-09 15:31:00  Android项目开发实战入门          1  No:221307653740   
2 2018-05-25 15:21:00  ASP.NET项目开发实战入门          1  No:221307653898   
3 2018-05-14 20:22:00  ASP.NET项目开发实战入门          1  No:221307653892   
4 2018-05-22 18:47:00       C#项目开发实战入门          1  No:221307653942   

   物流公司 订单备注  宝贝总数量      类别 图书编号  
0  申通快递    'null           1  全彩系列      B16  
1  申通快递    'null           1  全彩系列      B16  
2  申通快递    'null           1  全彩系列      B17  
3  申通快递    'null           1  全彩系列      B17  
4  申通快递    'null           1  全彩系列      B18  
3.6.2 使用行索引导入Excel数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
df1 = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/14/1月.xlsx',header=1)  #指定列索引导入,需要设置header参数
df2 = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/14/1月.xlsx',header=None)  #指定列索引,这里列索引设置为None就是用数字作为列索引了
df3 = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/14/1月.xlsx',index_col=0)  #指定行索引导入数据,设置index_col参数,这里是将“买家会员名”设置为行索引了
df4 = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/14/1月.xlsx',usecols=[0])  #导入指定列数据,设置usecols参数,这里导入第一列数据
print(df1.head())
print(df2.head())
print(df3.head())
print(df4.head())
   mrhy1  41.86  周某某      零基础学Python
0  mrhy2  41.86  杨某某      零基础学Python
1  mrhy3  48.86  刘某某      零基础学Python
2  mrhy4  48.86  张某某      零基础学Python
3  mrhy5  48.86  赵某某  C#项目开发实战入门
4  mrhy6  48.86  李某某  C#项目开发实战入门
            0                 1           2               3
0  买家会员名  买家实际支付金额  收货人姓名        宝贝标题
1       mrhy1             41.86      周某某  零基础学Python
2       mrhy2             41.86      杨某某  零基础学Python
3       mrhy3             48.86      刘某某  零基础学Python
4       mrhy4             48.86      张某某  零基础学Python
            买家实际支付金额 收货人姓名            宝贝标题
买家会员名                                                 
mrhy1                  41.86     周某某      零基础学Python
mrhy2                  41.86     杨某某      零基础学Python
mrhy3                  48.86     刘某某      零基础学Python
mrhy4                  48.86     张某某      零基础学Python
mrhy5                  48.86     赵某某  C#项目开发实战入门
  买家会员名
0      mrhy1
1      mrhy2
2      mrhy3
3      mrhy4
4      mrhy5
3.7 使用pandas导入csv格式文件
#使用pandas导入csv格式文件
import pandas as pd
pd.set_option('display.max_columns',500)  #设置最大导出列为500
pd.set_option('display.width',1000)  #设置最大宽度为1000
pd.set_option('display.unicode.east_asian_width',True)  #设置列名对齐
df = pd.read_csv('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/16/1月.csv',encoding='gbk')  #导入csv文件,设置编码格式为gbk
print(df.head())
  买家会员名  买家实际支付金额 收货人姓名            宝贝标题    订单付款时间 
0      mrhy1             41.86     周某某      零基础学Python   2018/5/16 9:41
1      mrhy2             41.86     杨某某      零基础学Python   2018/5/9 15:31
2      mrhy3             48.86     刘某某      零基础学Python  2018/5/25 15:21
3      mrhy4             48.86     张某某      零基础学Python  2018/5/25 15:21
4      mrhy5             48.86     赵某某  C#项目开发实战入门  2018/5/25 15:21
3.8 使用pandas导入txt文档
import pandas as pd
df = pd.read_csv('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/17/1月.txt',sep='\t',encoding='gbk')#和csv文件导入一样使用read_csv方法,同样指定编码格式为gbk
print(df.head())
  买家会员名  买家实际支付金额 收货人姓名            宝贝标题    订单付款时间 
0      mrhy1             41.86     周某某      零基础学Python   2018/5/16 9:41
1      mrhy2             41.86     杨某某      零基础学Python   2018/5/9 15:31
2      mrhy3             48.86     刘某某      零基础学Python  2018/5/25 15:21
3      mrhy4             48.86     张某某      零基础学Python  2018/5/25 15:21
4      mrhy5             48.86     赵某某  C#项目开发实战入门  2018/5/25 15:21

4. 数据抽取

import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
print(df)
print(df.loc['李涛'])   #使用loc方法抽取一行数据
print(df.iloc[3])   #使用iloc方法抽取一行数据
print(df.loc[['王雯','蒋欣']])#使用loc方法抽多行数据
print(df.iloc[:2])   #使用iloc方法抽取多行数据
      语文  数学  英语
王雯   112   134   125
李涛   122   150   121
蒋欣    99   123   136
李楠   112   115    98
语文    122
数学    150
英语    121
Name: 李涛, dtype: int64
语文    112
数学    115
英语     98
Name: 李楠, dtype: int64
      语文  数学  英语
王雯   112   134   125
蒋欣    99   123   136
      语文  数学  英语
王雯   112   134   125
李涛   122   150   121
4.1 使用列名抽取列数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
print(df)
print(df['英语'])  #使用列名抽取一行数据
print(df[['数学','语文']])   #使用列名抽取多列数据
      语文  数学  英语
王雯   112   134   125
李涛   122   150   121
蒋欣    99   123   136
李楠   112   115    98
王雯    125
李涛    121
蒋欣    136
李楠     98
Name: 英语, dtype: int64
      数学  语文
王雯   134   112
李涛   150   122
蒋欣   123    99
李楠   115   112
4.2 使用行名抽取行数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
print(df)
print(df.loc['蒋欣'])   #使用loc方法抽取一行数据
print(df.loc[['李涛','李楠']])  #使用loc方法抽取多行数据
      语文  数学  英语
王雯   112   134   125
李涛   122   150   121
蒋欣    99   123   136
李楠   112   115    98
语文     99
数学    123
英语    136
Name: 蒋欣, dtype: int64
      语文  数学  英语
李涛   122   150   121
李楠   112   115    98
4.3 使用行名抽取指定行列数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
print(df)
print(df.loc['李涛','英语'])  #抽取指定行,指定列的一个数据,李涛的英语成绩是121
print(df.loc[['李涛'],['英语']])  #抽取指定行列的数据
print(df.loc[['李涛'],['英语','语文']])   #抽取指定行的多列数据
print(df.loc[['李涛','蒋欣'],['英语']])  #抽取多行指定列的数据
print(df.loc[['李涛','蒋欣'],['英语','语文']])  #抽取多行多列的数据
print(df.iloc[[1],[2]])  #抽取第2行第3列的数据
print(df.iloc[1:,[2]])  #抽取第2行至最后一行,第3列的数据
print(df.iloc[[1],1:])  #抽取第2列到最后一列,第2行的数据
print(df.iloc[:,2])   #抽取所有行,第3列的数据
      语文  数学  英语
王雯   112   134   125
李涛   122   150   121
蒋欣    99   123   136
李楠   112   115    98
121
      英语
李涛   121
      英语  语文
李涛   121   122
      英语
李涛   121
蒋欣   136
      英语  语文
李涛   121   122
蒋欣   136    99
      英语
李涛   121
      英语
李涛   121
蒋欣   136
李楠    98
      数学  英语
李涛   150   121
王雯    125
李涛    121
蒋欣    136
李楠     98
Name: 英语, dtype: int64
4.4 按指定条件抽取数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
print(df)
print(df.loc[(df['语文']>120) & (df['英语']>120)])  #筛选语文大于120分,且,英语大于120分的同学
      语文  数学  英语
王雯   112   134   125
李涛   122   150   121
蒋欣    99   123   136
李楠   112   115    98
      语文  数学  英语
李涛   122   150   121

5. 数据的增删改

5.1 数据的增加
5.1.1 DataFrame对象增加数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
df['物理'] =[121,111,109,104]  #使用DataFrame方法给各位同学增加物理成绩
df.loc[:,'化学'] = [98,110,97,121]  #使用loc方法给同学们增加化学成绩
w1=[90,88,108,102]
df.insert(1,'生物',w1)   #使用insert方法在指定的第列位置添加生物学科成绩
print(df)
      语文  生物  数学  英语  物理  化学
王雯   112    90   134   125   121    98
李涛   122    88   150   121   111   110
蒋欣    99   108   123   136   109    97
李楠   112   102   115    98   104   121
5.1.2 DataFrame对象增加数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
df.loc['陈江']=[110,112,128]  #使用loc方法增加陈江同学的三门学科成绩
print(df)
      语文  数学  英语
王雯   112   134   125
李涛   122   150   121
蒋欣    99   123   136
李楠   112   115    98
陈江   110   112   128
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
df_insert =pd.DataFrame({'语文':[120,112,109],'数学':[112,110,108],'英语':[108,102,98]},index=['江青','王文斌','石红'])
df1=df.append(df_insert)  #使用append方法添加多个学生成绩
print(df1)
        语文  数学  英语
王雯     112   134   125
李涛     122   150   121
蒋欣      99   123   136
李楠     112   115    98
江青     120   112   108
王文斌   112   110   102
石红     109   108    98
5.2 数据的修改
5.2.1 修改列标题
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
df.columns = ['语文(上)','数学(上)','英语(上)']  #使用columns方法修改列标题
print(df)

      语文(上)  数学(上)  英语(上)
王雯       112       134       125
李涛       122       150       121
蒋欣        99       123       136
李楠       112       115        98
5.2.2 修改行标题
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
#df.index = list('1234')  #使用list方法修改行标题,会覆盖掉原来的行标题

w1=['1班','2班','2班','4班']
df.insert(0,'班级信息',w1)  #使用insert方法增加班级信息

print(df)
     班级信息  语文  数学  英语
王雯      1班   112   134   125
李涛      2班   122   150   121
蒋欣      2班    99   123   136
李楠      4班   112   115    98
5.2.3 修改数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
w1=['1班','2班','2班','4班']
df.insert(0,'班级信息',w1)  #使用insert方法增加班级信息
df.loc['王雯','英语']= 112  #修正王雯的英语成绩
df.loc['蒋欣','班级信息']='3班'  #修正蒋欣的班级信息
df.loc[:,'语文']=[110,113,112,114]  #修正所有人的语文成绩
df.iloc[:,3]=[112,112,111,112]
print(df)
     班级信息  语文  数学  英语
王雯      1班   110   134   112
李涛      2班   113   150   112
蒋欣      3班   112   123   111
李楠      4班   114   115   112
5.3 数据的删除

使用DataFrame的drop方法

5.3.1 删除数据的方法

DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
参数解释
– labels: 表示行标签或者列标签
– axis:axis=0 表示按行删除,axis=1表示按列删除,默认值为0
– index:删除行,默认值为None
– columns:删除列,默认值为None
– level:针对有两级索引的数据,level=0,表示按第1级索引删除整行;level=1,表示按第2级索引删除整行,默认值为None
– inplace:可选参数,对原数组做出修改并返回一个新的数组。默认值为False,如果值为True,那么原数组就将直接被替换
– errors:参数值为ignore或者raise,默认值为raise,如果值为ignore,则取消错误

5.3.2 删除行列数据
#按列删除数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
df.drop(['数学'],axis=1,inplace=True)
print(df)
      语文  英语
王雯   112   125
李涛   122   121
蒋欣    99   136
李楠   112    98
#按行删除数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[112,134,125],[122,150,121],[99,123,136],[112,115,98]]
names = ['王雯','李涛','蒋欣','李楠']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=names,columns=columns)
df.drop(['李涛'],axis=0,inplace=True)
print(df)
      语文  数学  英语
王雯   112   134   125
蒋欣    99   123   136
李楠   112   115    98

6. 数据清洗

6.1查看与处理缺失值
6.1.1 查看数据缺失值
#使用info()方法查看数据概况
import pandas as pd
df = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/37/TB2018.xls')
print(df)
print(df.info())
  买家会员名  买家实际支付金额  宝贝总数量                     宝贝标题   \
0      mr001            143.50         2.0                Python黄金组合   
1      mr002             78.80         1.0                Python编程锦囊   
2      mr003             48.86         1.0                 零基础学C语言   
3      mr004             81.75         NaN  SQL Server应用与开发范例宝典   
4      mr005            299.00         1.0          Python程序开发资源库   
5      mr006             41.86         1.0                零基础学Python   
6      mr007             55.86         1.0            C语言精彩编程200例   
7      mr008             41.86         NaN         C语言项目开发实战入门   
8      mr009             41.86         1.0          Java项目开发实战入门   
9      mr010             34.86         1.0                   SQL即查即用   

   类别        订单付款时间  
0  图书 2018-10-09 22:54:26  
1   NaN 2018-10-09 22:52:42  
2  图书 2018-01-19 12:53:01  
3  图书 2018-06-30 11:46:14  
4   NaN 2018-03-23 18:25:45  
5  图书 2018-03-24 19:25:45  
6  图书 2018-03-25 11:00:45  
7  图书 2018-03-26 23:11:11  
8  图书 2018-03-27 07:25:30  
9  图书 2018-03-28 18:09:12  
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 6 columns):
 #   Column    Non-Null Count  Dtype         
---  ------    --------------  -----         
 0   买家会员名     10 non-null     object        
 1   买家实际支付金额  10 non-null     float64       
 2   宝贝总数量     8 non-null      float64       
 3   宝贝标题      10 non-null     object        
 4   类别        8 non-null      object        
 5   订单付款时间    10 non-null     datetime64[ns]
dtypes: datetime64[ns](1), float64(2), object(3)
memory usage: 608.0+ bytes
None
#判断数据是否存在缺失值,使用isnull()和notnull()方法
import pandas as pd
df = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/37/TB2018.xls')
print(df)
print(df.isnull())
print(df.notnull())
print(df.info())
  买家会员名  买家实际支付金额  宝贝总数量                     宝贝标题   \
0      mr001            143.50         2.0                Python黄金组合   
1      mr002             78.80         1.0                Python编程锦囊   
2      mr003             48.86         1.0                 零基础学C语言   
3      mr004             81.75         NaN  SQL Server应用与开发范例宝典   
4      mr005            299.00         1.0          Python程序开发资源库   
5      mr006             41.86         1.0                零基础学Python   
6      mr007             55.86         1.0            C语言精彩编程200例   
7      mr008             41.86         NaN         C语言项目开发实战入门   
8      mr009             41.86         1.0          Java项目开发实战入门   
9      mr010             34.86         1.0                   SQL即查即用   

   类别        订单付款时间  
0  图书 2018-10-09 22:54:26  
1   NaN 2018-10-09 22:52:42  
2  图书 2018-01-19 12:53:01  
3  图书 2018-06-30 11:46:14  
4   NaN 2018-03-23 18:25:45  
5  图书 2018-03-24 19:25:45  
6  图书 2018-03-25 11:00:45  
7  图书 2018-03-26 23:11:11  
8  图书 2018-03-27 07:25:30  
9  图书 2018-03-28 18:09:12  
   买家会员名  买家实际支付金额  宝贝总数量  宝贝标题    类别  订单付款时间
0       False             False       False      False  False         False
1       False             False       False      False   True         False
2       False             False       False      False  False         False
3       False             False        True      False  False         False
4       False             False       False      False   True         False
5       False             False       False      False  False         False
6       False             False       False      False  False         False
7       False             False        True      False  False         False
8       False             False       False      False  False         False
9       False             False       False      False  False         False
   买家会员名  买家实际支付金额  宝贝总数量  宝贝标题    类别  订单付款时间
0        True              True        True       True   True          True
1        True              True        True       True  False          True
2        True              True        True       True   True          True
3        True              True       False       True   True          True
4        True              True        True       True  False          True
5        True              True        True       True   True          True
6        True              True        True       True   True          True
7        True              True       False       True   True          True
8        True              True        True       True   True          True
9        True              True        True       True   True          True
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 6 columns):
 #   Column    Non-Null Count  Dtype         
---  ------    --------------  -----         
 0   买家会员名     10 non-null     object        
 1   买家实际支付金额  10 non-null     float64       
 2   宝贝总数量     8 non-null      float64       
 3   宝贝标题      10 non-null     object        
 4   类别        8 non-null      object        
 5   订单付款时间    10 non-null     datetime64[ns]
dtypes: datetime64[ns](1), float64(2), object(3)
memory usage: 608.0+ bytes
None
6.1.2 数据缺失值处理
#删除数据缺失值
import pandas as pd
df = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/37/TB2018.xls')
print(df)
print(df.dropna())
  买家会员名  买家实际支付金额  宝贝总数量                     宝贝标题   \
0      mr001            143.50         2.0                Python黄金组合   
1      mr002             78.80         1.0                Python编程锦囊   
2      mr003             48.86         1.0                 零基础学C语言   
3      mr004             81.75         NaN  SQL Server应用与开发范例宝典   
4      mr005            299.00         1.0          Python程序开发资源库   
5      mr006             41.86         1.0                零基础学Python   
6      mr007             55.86         1.0            C语言精彩编程200例   
7      mr008             41.86         NaN         C语言项目开发实战入门   
8      mr009             41.86         1.0          Java项目开发实战入门   
9      mr010             34.86         1.0                   SQL即查即用   

   类别        订单付款时间  
0  图书 2018-10-09 22:54:26  
1   NaN 2018-10-09 22:52:42  
2  图书 2018-01-19 12:53:01  
3  图书 2018-06-30 11:46:14  
4   NaN 2018-03-23 18:25:45  
5  图书 2018-03-24 19:25:45  
6  图书 2018-03-25 11:00:45  
7  图书 2018-03-26 23:11:11  
8  图书 2018-03-27 07:25:30  
9  图书 2018-03-28 18:09:12  
  买家会员名  买家实际支付金额  宝贝总数量             宝贝标题   类别  \
0      mr001            143.50         2.0        Python黄金组合  图书   
2      mr003             48.86         1.0         零基础学C语言  图书   
5      mr006             41.86         1.0        零基础学Python  图书   
6      mr007             55.86         1.0    C语言精彩编程200例  图书   
8      mr009             41.86         1.0  Java项目开发实战入门  图书   
9      mr010             34.86         1.0           SQL即查即用  图书   

         订单付款时间  
0 2018-10-09 22:54:26  
2 2018-01-19 12:53:01  
5 2018-03-24 19:25:45  
6 2018-03-25 11:00:45  
8 2018-03-27 07:25:30  
9 2018-03-28 18:09:12  
#填充数据缺失值
import pandas as pd
df = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/37/TB2018.xls')
df['宝贝总数量'] = df['宝贝总数量'].fillna(0)
print(df)
  买家会员名  买家实际支付金额  宝贝总数量                     宝贝标题   \
0      mr001            143.50         2.0                Python黄金组合   
1      mr002             78.80         1.0                Python编程锦囊   
2      mr003             48.86         1.0                 零基础学C语言   
3      mr004             81.75         0.0  SQL Server应用与开发范例宝典   
4      mr005            299.00         1.0          Python程序开发资源库   
5      mr006             41.86         1.0                零基础学Python   
6      mr007             55.86         1.0            C语言精彩编程200例   
7      mr008             41.86         0.0         C语言项目开发实战入门   
8      mr009             41.86         1.0          Java项目开发实战入门   
9      mr010             34.86         1.0                   SQL即查即用   

   类别        订单付款时间  
0  图书 2018-10-09 22:54:26  
1   NaN 2018-10-09 22:52:42  
2  图书 2018-01-19 12:53:01  
3  图书 2018-06-30 11:46:14  
4   NaN 2018-03-23 18:25:45  
5  图书 2018-03-24 19:25:45  
6  图书 2018-03-25 11:00:45  
7  图书 2018-03-26 23:11:11  
8  图书 2018-03-27 07:25:30  
9  图书 2018-03-28 18:09:12  
6.2 数据重复值
  1. 判断每一行数据是否重复(完全相同)
    df.duplicated()
    如果返回值为False,表示不重复;返回值为True表示重复
  2. 去除全部的重复数据
    df.drop_duplicates()
  3. 去除指定列的重复数据
    df.drop_duplicates(['买家会员名'])
  4. 保留重复行中的最后一行
    df.drop_duplicates(['买家会员名'],keep='last')
  5. 直接删除,保留一个副本
    df.drop_duplicates(['买家会员名','买家支付宝账号'],inplace=False)

7. 索引的设置

##### 7.1 索引的做用
7.2 对Series对象重新设置索引

使用reindex()方法重新设置索引
s.reindex([1,2,3,4,5])
s.reindex([1,2,3,4,5],fill_value=0) 缺失值用0填充
s.reindex([1,2,3,4,5],method='ffill') 向前填充数据
s.reindex([1,2,3,4,5],method='bfill') 向后填充数据

import pandas as pd
s1 = pd.Series([99,43,123],index=[1,2,3])
print(s1)
print(s1.reindex([1,2,3,4,5]))
print(s1.reindex([1,2,3,4,5],fill_value=0))
1     99
2     43
3    123
dtype: int64
1     99.0
2     43.0
3    123.0
4      NaN
5      NaN
dtype: float64
1     99
2     43
3    123
4      0
5      0
dtype: int64
7.2 对DataFrame对象重新设置索引
7.2.1 重新设置索引

重新设置行索引,使用df.reindex(index=[])
重新设置列索引,使用df.reindxe(columns=[])

import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[110,97,112],[112,115,98],[98,121,99]]
index = ['mr001','mr003','mr005']
columns = ['语文','数学','英语']
df = pd.DataFrame(data=data,index=index,columns=columns)
df1 = df.reindex(index=['mr001','mr002','mr003','mr004','mr005'],columns=['语文','数学','英语','物理'])
print(df1)
        语文   数学   英语  物理
mr001  110.0   97.0  112.0   NaN
mr002    NaN    NaN    NaN   NaN
mr003  112.0  115.0   98.0   NaN
mr004    NaN    NaN    NaN   NaN
mr005   98.0  121.0   99.0   NaN
7.2.2 设置某列为索引
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
df = pd.read_excel('/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/44/1月.xlsx')
df = df.set_index(['买家会员名'])
print(df.head())
            买家实际支付金额 收货人姓名            宝贝标题
买家会员名                                                 
mrhy1                  41.86     周某某      零基础学Python
mrhy2                  41.86     杨某某      零基础学Python
mrhy3                  48.86     刘某某      零基础学Python
mrhy4                  48.86     张某某      零基础学Python
mrhy5                  48.86     赵某某  C#项目开发实战入门
7.2.3 删除数据后重新设置索引

如果要重新设置索引,则可以使用reset_index()方法,在删除确实值后重新设置索引,关键代码如下:
df = df.dropna().rest_index(drop=True)

7.8 数据排序与排名

7.8.1 数据排序

DataFrame数据排序时主要使用sort_values()方法。
DataFrame.sort_values(by,axis=0,ascending=True,inplace=False,kind='quicksort,na_position='last',ignore_index=False)
参数解释
– by:要排序的名称列表
– axsi:轴i,0表示行;1表示列,默认按行排序
– ascending:升序或者降序,布尔值,指定多个排序可以使用布尔值列表,降序
– inplace:布尔值,默认值为False,如果是True,则就地排序;
– kind: 指定排序算法,值为quicklist:快速排序;mergesort:混合排序;heapsort:堆排;默认值为quicklist
– na_position:空值(NaN)的位置,值为first空值在数据开头,值为last空值在数据最后,默认值为last
– ignore_index: 布尔值,是否忽略索引,值为True标记索引(从0开始按顺序的整数值),值为False则忽略索引

7.8.2 按一列数据排序
import pandas as pd
excelFile = '/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/46/mrbook.xlsx'
df = pd.DataFrame(pd.read_excel(excelFile))
#设置数据显示的列数和宽度
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)
#按“销量”列升序排序
df = df.sort_values(by=['图书名称','销量'],ascending=False)
print(df)
   序号           书号                 图书名称   定价  销量        类别      大类
14  B15  9787569222258           零基础学Python   79.8   888      Python  程序设计
26  B24  9787569208689              零基础学PHP   79.8   248         PHP      网站
17  B23  9787569212693           零基础学Oracle   79.8   148      Oracle    数据库
20  B22  9787569210460       零基础学Javascript   79.8   322  Javascript      网页
13  B21  9787569205688             零基础学Java   69.8   663        Java  程序设计
19  B20  9787569212709       零基础学HTML5+CSS3   79.8   456  HTML5+CSS3      网页
9   B19  9787569208535            零基础学C语言   69.8   888    C语言C++  程序设计
10  B25  9787569226614              零基础学C++   79.8   333    C语言C++  程序设计
5   B18  9787569210477               零基础学C#   79.8   120          C#  程序设计
2   B16  9787569208542         零基础学Android    89.8   110     Android  程序设计
22  B17  9787569221220          零基础学ASP.NET   79.8   120     ASP.NET      网站
18  B14  9787569221237              SQL即查即用   49.8   120         SQL    数据库
16  B27  9787569244403   Python项目开发案例集锦  128.0   281      Python  程序设计
15  B26  9787569226607   Python从入门到项目实践   99.8   559      Python  程序设计
25  B13  9787567790971      PHP项目开发实战入门   69.8   354         PHP      网站
12  B11  9787567787407     Java项目开发实战入门   59.8   120        Java  程序设计
11  B10  9787569206081        Java精彩编程200例   79.8   241        Java  程序设计
23  B09  9787567787438  JavaWeb项目开发实战入门   69.8   129     JavaWeb      网站
24  B12  9787567790315      JSP项目开发实战入门   69.8   120         JSP      网站
8   B08  9787567787414    C语言项目开发实战入门   59.8   625    C语言C++  程序设计
7   B07  9787569208696       C语言精彩编程200例   79.8   271    C语言C++  程序设计
6   B06  9787567787445      C++项目开发实战入门   69.8   120    C语言C++  程序设计
4   B05  9787567790988       C#项目开发实战入门   69.8   541          C#  程序设计
3   B04  9787569210453          C#精彩编程200例   89.8   120          C#  程序设计
1   B02  9787567787421  Android项目开发实战入门   59.8  2355     Android  程序设计
0   B01  9787569204537     Android精彩编程200例   89.8  1300     Android  程序设计
21  B03  9787567799424  ASP.NET项目开发实战入门   69.8   120     ASP.NET      网站
7.8.3 对统计结果排序
import pandas as pd
excelFile = '/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/48/mrbook.xlsx'
df = pd.DataFrame(pd.read_excel(excelFile))
#设置数据显示的列数和宽度
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)
df1 = df.groupby(['类别'])['销量'].sum().reset_index()
df2 = df1.sort_values(by='销量',ascending=False)
print(df2)
          类别  销量
1      Android  3765
3     C语言C++  2237
11      Python  1728
6         Java  1024
2           C#   781
10         PHP   602
4   HTML5+CSS3   456
8   Javascript   322
0      ASP.NET   240
9       Oracle   148
7      JavaWeb   129
5          JSP   120
12         SQL   120
7.8.4 按行数据排序
import pandas as pd
excelFile = '/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/46/mrbook.xlsx'
df = pd.DataFrame(pd.read_excel(excelFile))
#设置数据显示的列数和宽度
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)
df =  df.sort_values(by='类别')
print(df)
   序号           书号                 图书名称   定价  销量        类别      大类
22  B17  9787569221220          零基础学ASP.NET   79.8   120     ASP.NET      网站
21  B03  9787567799424  ASP.NET项目开发实战入门   69.8   120     ASP.NET      网站
0   B01  9787569204537     Android精彩编程200例   89.8  1300     Android  程序设计
1   B02  9787567787421  Android项目开发实战入门   59.8  2355     Android  程序设计
2   B16  9787569208542         零基础学Android    89.8   110     Android  程序设计
3   B04  9787569210453          C#精彩编程200例   89.8   120          C#  程序设计
4   B05  9787567790988       C#项目开发实战入门   69.8   541          C#  程序设计
5   B18  9787569210477               零基础学C#   79.8   120          C#  程序设计
6   B06  9787567787445      C++项目开发实战入门   69.8   120    C语言C++  程序设计
7   B07  9787569208696       C语言精彩编程200例   79.8   271    C语言C++  程序设计
8   B08  9787567787414    C语言项目开发实战入门   59.8   625    C语言C++  程序设计
9   B19  9787569208535            零基础学C语言   69.8   888    C语言C++  程序设计
10  B25  9787569226614              零基础学C++   79.8   333    C语言C++  程序设计
19  B20  9787569212709       零基础学HTML5+CSS3   79.8   456  HTML5+CSS3      网页
24  B12  9787567790315      JSP项目开发实战入门   69.8   120         JSP      网站
13  B21  9787569205688             零基础学Java   69.8   663        Java  程序设计
12  B11  9787567787407     Java项目开发实战入门   59.8   120        Java  程序设计
11  B10  9787569206081        Java精彩编程200例   79.8   241        Java  程序设计
23  B09  9787567787438  JavaWeb项目开发实战入门   69.8   129     JavaWeb      网站
20  B22  9787569210460       零基础学Javascript   79.8   322  Javascript      网页
17  B23  9787569212693           零基础学Oracle   79.8   148      Oracle    数据库
25  B13  9787567790971      PHP项目开发实战入门   69.8   354         PHP      网站
26  B24  9787569208689              零基础学PHP   79.8   248         PHP      网站
16  B27  9787569244403   Python项目开发案例集锦  128.0   281      Python  程序设计
14  B15  9787569222258           零基础学Python   79.8   888      Python  程序设计
15  B26  9787569226607   Python从入门到项目实践   99.8   559      Python  程序设计
18  B14  9787569221237              SQL即查即用   49.8   120         SQL    数据库
7.8.5 数据排名

DataFrame.rank(axis=0,method='average',numeric_only=None,na_option='keep',ascending=True,pct=False)
参数说明
– axis: 轴,0表示行,1表示列,默认按行排序
– method: 表示在具有相同值的情况下所使用的排序方法。设置值如下:
– average:默认值,平均排名
– min:最小值排名
– max:最大值排名
– first:按值在原始数据中的出现的顺序分配排名
– dense:密集排名,类似最小值排名,但是排名每次只增加1,即排名相同的数据只占一个名词
– numeric_only: 对于DataFrame对象,如果设置值为True,则只对数字进行排序
– na-optoon:空值的排序方式,设置值如下:
– keep:保留,即将空值等级赋值给NaN值
– top:如果按升序排序,则将最小排名赋值给NaN值
– bottom:如果按升序排序,则将最大值赋值给NaN值
– ascending: 升序或者降序排序,布尔值,指定多个排序可以使用布尔值列表,默认值为True
– pct: 布尔值,是否以百分比形式返回排名,默认值为False

7.8.6 顺序排名
import pandas as pd
excelFile = '/Users/jackeroo/Downloads/Python数据分析从入门到实践-源码/03/50/mrbook.xlsx'
df = pd.DataFrame(pd.read_excel(excelFile))
#设置数据显示的列数和宽度
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)

df = df.sort_values(by='销量',ascending=False)  #按销售降序排名
#df['顺序排名'] = df['销量'].rank(method='first',ascending=False)  #顺序排名
#df['平均排名'] = df['销量'].rank(ascending=False)  #平均排名
#df['最小值排名'] = df['销量'].rank(method='min',ascending=False)  #最小值排名
df['最大值排名'] = df['销量'].rank(method='max',ascending=False)  #最小值排名
print(df[['图书名称','销量','最大值排名']])
                   图书名称  销量  最大值排名
1   Android项目开发实战入门  2355         1.0
0      Android精彩编程200例  1300         2.0
9             零基础学C语言   888         4.0
14           零基础学Python   888         4.0
13             零基础学Java   663         5.0
8     C语言项目开发实战入门   625         6.0
15   Python从入门到项目实践   559         7.0
4        C#项目开发实战入门   541         8.0
19       零基础学HTML5+CSS3   456         9.0
25      PHP项目开发实战入门   354        10.0
10              零基础学C++   333        11.0
20       零基础学Javascript   322        12.0
16   Python项目开发案例集锦   281        13.0
7        C语言精彩编程200例   271        14.0
26              零基础学PHP   248        15.0
11        Java精彩编程200例   241        16.0
17           零基础学Oracle   148        17.0
23  JavaWeb项目开发实战入门   129        18.0
6       C++项目开发实战入门   120        26.0
18              SQL即查即用   120        26.0
3           C#精彩编程200例   120        26.0
12     Java项目开发实战入门   120        26.0
21  ASP.NET项目开发实战入门   120        26.0
22          零基础学ASP.NET   120        26.0
24      JSP项目开发实战入门   120        26.0
5                零基础学C#   120        26.0
2          零基础学Android    110        27.0
1. 本站所有文章和内容源于站长整理与输出,如有侵权请邮件联系站长!
2. 本站部分文章教程提供PDF版本付费下载收藏备用,网页版可免费阅读与浏览!
3. 联系站长或者加入社群,请通过顶部菜单栏加入,或者邮件联系 jackerooliu@gmail.com.
Jackeroo的个人独立博客 | Working | Life | Interests » Pandas库入门基础知识

发表评论