先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
正文
print(“=======================”)
print(df[‘AAA’] > 110)
print(type(df[‘AAA’] > 110))
如图,输出了一个value为bool类型数据的Series对象。
可以使用该种形式的Series对DataFrame进行筛选
print(df)
print(“=======================”)
print(df.loc[df[‘AAA’] > 110])
也可以传入多个条件进行筛选。每个条件需要使用括号()括起来。
以获取’AAA’大于110且’CCC’大于115的为例:
print(df)
print(“=======================”)
print(df.loc[(df[‘AAA’] > 110) & (df[‘CCC’] > 115)])
2.4.1 按列增加数据
2.4.1.1 直接添加
print(df)
print(“=======================”)
df[‘EEE’] = [140, 133, 145, 125, 126, 133]
print(df)
也可以使用loc添加
添加一整列时行索引必须是所有行,列索引是一个新的列名。添加的数据个数必须等于总行数。插入的数据在最后一列。
print(df)
print(“=======================”)
df.loc[:, ‘FFF’] = [84, 99, 76, 50, 20, 66]
print(df)
如果行索引是部分行,且列索引已存在于原数据中,则效果为修改局部数据。
print(df)
print(“=======================”)
df.loc[1:4, ‘CCC’] = [99, 76, 50, 20]
print(df)
使用insert()方法添加
在第1列后添加一个名为’SSS’的列,数据为s1中的数据。
print(df)
print(“=======================”)
s1 = [99, 89, 95, 84, 110, 104]
df.insert(1, ‘SSS’, s1)
print(df)
2.4.2 按行增加数据
2.4.2.1 增加一行
print(df)
print(“=======================”)
df.loc[‘100’] = [111, 132, 99, 123]
print(df)
2.4.2.2 增加多行数据
将新数据创建一个格式一致的、新的DataFrame,然后使用append方法追加在原数据后边。
print(df)
print(“=======================”)
df_insert = pd.DataFrame({‘AAA’: [102, 124, 133, 120, 115, 121],
‘BBB’: [110, 125, 140, 111, 117, 126],
‘CCC’: [112, 118, 122, 114, 136, 125],
‘DDD’: ‘XYZ’}
, index=[10, 20, 30, 40, 50, 60])
df1 = df.append(df_insert)
print(df)
print(“============================”)
print(df1)
如图,使用append方法对一个DataFrame在后边追加一个DataFrame,不会改变原DataFrame,这一点不同于列表追加元素。
2.5.1修改列名
2.5.1.1 通过DataFrame的columns属性
print(df)
print(“=======================”)
df.columns = [‘A1’, ‘B2’, ‘C3’, ‘V4’]
print(df)
2.5.1.2 通过DataFrame的rename()方法
print(df)
print(“=======================”)
df.rename(columns={‘AAA’: ‘A1’, ‘BBB’: ‘B2’, ‘CCC’: ‘C3’}, inplace=True)
print(df)
inplace参数表示是否修改原DataFrame,默认False不修改。
2.5.2 修改索引(index)
2.5.2.1 通过index属性
print(df)
print(“=======================”)
df.index = list(‘abcdef’)
print(df)
2.5.2.2通过rename方法
通过rename方法也可以实现对索引的修改。
参数axis默认为0,表示对index操作,(所以这里不设置axis也可)除非像上边的例子中传入有columns参数则表示对列操作。
print(df)
print(“=======================”)
df.rename({1: ‘a1’, 2: ‘b2’, 3: ‘c3’, 4: ‘d4’}, axis=0, inplace=True)
print(df)
2.6.1 使用loc
修改整行数据
print(df)
print(“=======================”)
df.loc[3] = [111, 115, 109, 120]
print(df)
print(“============================”)
df.loc[3] = df.loc[3]+10
print(df)
修改整列数据
print(df)
print(“=======================”)
df.loc[:, ‘CCC’] = [116, 104, 115, 120, 125, 124]
print(df)
修改指定某一数据
print(df)
print(“=======================”)
df.loc[3, ‘BBB’] = 150
print(df)
2.6.2 使用iloc
修改整行数据
print(df)
print(“=======================”)
df.iloc[0, :] = [112, 120, 119, 126]
print(df)
修改整列数据
print(df)
print(“=======================”)
df.iloc[:, 0] = [111, 118, 114, 102, 125, 130]
print(df)
修改指定某一数据
print(df)
print(“=======================”)
df.iloc[0, 0] = 150
print(df)
2.7.1 删除某列
print(df)
print(“=======================”)
df.drop([‘AAA’], axis=1, inplace=True)
print(df)
print(df)
print(“=======================”)
df.drop(columns=‘AAA’, inplace=True)
print(df)
删除标签为’BBB’的,axis=1表示对列操作
print(df)
print(“=======================”)
df.drop(labels=‘BBB’, axis=1, inplace=True)
print(df)
2.7.2 删除某行
删除标签为2,4的行,axis默认为0,默认对行操作。
print(df)
print(“=======================”)
df.drop([2, 4], inplace=True)
print(df)
print(df)
print(“=======================”)
df.drop(index=3, inplace=True)
print(df)
删除标签为4的,axis=0表示对行操作。
print(df)
print(“=======================”)
df.drop(labels=4, axis=0, inplace=True)
print(df)
2.7.3删除特定条件的行
删除字段’AAA’为120,101或114的行。
print(df)
print(“=======================”)
df.drop(index=df[df[‘AAA’].isin([120, 101, 114])].index, inplace=True)
print(df)
删除"BBB"字段小于120的行
print(df)
print(“=======================”)
df.drop(index=df[df[‘BBB’] < 120].index, inplace=True)
print(df)
print(df)
print(“=======================”)
print(df.info())
2.9.1处理缺失值
2.9.1.1 准备缺失值
准备两个缺失值
import numpy as np
df.iloc[0, 0] = np.NaN
df.iloc[2, 2] = np.NaN
print(df)
2.9.1.2 删除该缺失值所在行
print(df)
print(“====================”)
不修改原df的写法
df1 = df.dropna()
print(df1)
修改原df的写法
df.dropna(inplace=True)
print(df)
2.9.1.3获取某字段没有缺失值 的行
print(df)
print(“=============================”)
df2 = df[df[‘AAA’].notnull()]
print(df2)
2.9.1.4 填充缺失值
以将缺失值填充为0为例
2.9.1.4.1 填充所有缺失值
print(df)
print(“=============================”)
df3 = df.fillna(0)
print(df3)
2.9.1.4.2 填充局部缺失值
print(df)
print(“=============================”)
df[‘AAA’] = df[‘AAA’].fillna(0)
print(df)
2.9.2 处理重复值
2.9.2.1准备数据
import pandas as pd
df = pd.DataFrame({
‘AAA’: [120, 101, 106, 101, 101, 122],
‘BBB’: [115, 100, 110, 100, 100, 120],
‘CCC’: [109, 112, 125, 112, 112, 115],
‘DDD’: ‘ABCDEFG’
}, index=[1, 2, 3, 4, 5, 6])
print(df)
2.9.2.2 判断重复值
2.9.2.2.1 判断整行数据是否重复
将一行完全相同的判断为重复值,第一次出现的行不会被判定为重复值,第二次及以上次数重复出现的才会。
print(df)
print(“=============================”)
print(df.duplicated())
2.9.2.2.2 判断某字段数据是否重复
以字段"AAA"为例。
print(df)
print(“=============================”)
print(df[‘AAA’].duplicated())
或者
print(df.duplicated([‘AAA’]))
print(“=============================”)
print(df.loc[df[‘AAA’].duplicated()])
2.9.2.3 去重
2.9.2.3.1 删除整行重复值
不更改原df
print(df)
print(“=============================”)
df1 = df.drop_duplicates()
print(df1)
更改原df
print(df)
print(“=============================”)
df.drop_duplicates(inplace=True)
print(df)
2.9.2.3.2 删除某字段重复 的行
print(df)
print(“=============================”)
print(df.drop_duplicates([‘AAA’]))
如果要保留重复行中的最后一行(默认是第一行),须将参数keep设置为’last’:
print(df)
print(“=============================”)
print(df.drop_duplicates([‘AAA’], keep=‘last’))
2.10.1 reindex
缺失值以0填充
from pandas import Series
s1 = Series([88, 60, 75], index=[1, 2, 3])
print(s1)
print(“========================”)
print(s1.reindex([1, 2, 3, 4, 5]))
print(“========================”)
重新设置索引,NaN以0填充
print(s1.reindex([1, 2, 3, 4, 5],fill_value=0))
缺失值向前/向后填充
from pandas import Series
从pandas引入Series对象,就可以直接使用Series对象了,如Series([88,60,75],index=[1,2,3])
s1 = Series([88, 60, 75], index=[1, 2, 3])
print(s1)
print(“========================”)
print(s1.reindex([1, 2, 3, 4, 5], method=‘ffill’)) # 向前填充
print(“========================”)
print(s1.reindex([1, 2, 3, 4, 5], method=‘bfill’)) # 向后填充
重新设置行索引、列索引和行列索引
import pandas as pd
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]]
index = [‘001’, ‘003’, ‘005’]
columns = [‘语文’, ‘数学’, ‘英语’]
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(“===============================================”)
通过reindex()方法重新设置行索引、列索引和行列索引
print(df.reindex([‘001’, ‘002’, ‘003’, ‘004’, ‘005’]))
print(“===============================================”)
print(df.reindex(columns=[‘语文’, ‘物理’, ‘数学’, ‘英语’]))
print(“===============================================”)
print(df.reindex(index=[‘001’, ‘002’, ‘003’, ‘004’, ‘005’], columns=[‘语文’, ‘物理’, ‘数学’, ‘英语’]))
2.10.2 set_index
2.10.2.1 设置某列为index
设置"AAA"为index
import pandas as pd
df = pd.DataFrame({
‘AAA’: [120, 101, 106, 101, 101, 120],
‘BBB’: [115, 100, 110, 100, 100, 120],
‘CCC’: [109, 112, 125, 112, 112, 115],
‘DDD’: ‘ABCDEFG’
}, index=[1, 2, 3, 4, 5, 6])
print(df)
print(“=============================”)
设置“买家会员名”为行索引
df = df.set_index([‘AAA’])
print(df)
2.10.2.2 设置drop=True
设置drop=True,是把原来的索引index列去掉,重置index。不设置该参数则原index会作为一列保留。
import pandas as pd
df = pd.DataFrame({
‘AAA’: [120, 101, 106, 101, 101, 120],
‘BBB’: [115, 100, 110, 100, 100, 120],
‘CCC’: [109, 112, 125, 112, 112, 115],
‘DDD’: ‘ABCDEFG’
}, index=[101, 203, 304, 409, 511, 625])
print(df)
print(“=============================”)
df1 = df.dropna().reset_index()
print(df1)
print(“=============================”)
df2 = df.reset_index(drop=True)
print(df2)
2.11.1 sort_values()单列排序
ascending默认为True,表示升序。设置为False表示降序。
sort_values()也可以通过设定inplace参数来选择是否修改原df。
import pandas as pd
df = pd.DataFrame({
‘AAA’: [120, 101, 106, 101, 101, 120],
‘BBB’: [115, 100, 110, 100, 100, 120],
‘CCC’: [109, 112, 125, 112, 112, 115],
‘DDD’: ‘ABCDEFG’
}, index=[1, 2, 3, 4, 5, 6])
print(df)
print(“=============================”)
df1 = df.sort_values(by=‘BBB’, ascending=False)
print(df1)
2.11.2 sort_values()多列排序
多列排序按照给定列的先后顺序进行排序。
import pandas as pd
df = pd.DataFrame({
‘AAA’: [120, 101, 106, 101, 101, 120],
‘BBB’: [115, 100, 110, 100, 100, 120],
‘CCC’: [109, 112, 125, 112, 112, 115],
‘DDD’: ‘ABCDEFG’
}, index=[1, 2, 3, 4, 5, 6])
print(df)
print(“=============================”)
df1 = df.sort_values(by=[‘AAA’, ‘BBB’])
print(df1)
如图,先升序排列"AAA","AAA"值相同的用"BBB"升序排列。
2.11.3 group_by()对统计结果排序
import pandas as pd
df = pd.DataFrame({
‘AAA’: [120, 101, 106, 101, 101, 120, 115, 112, 117, 132],
‘BBB’: [115, 100, 110, 100, 100, 120, 113, 114, 130, 111],
‘CCC’: [109, 112, 125, 112, 112, 115, 120, 122, 110, 119],
‘DDD’: [‘A’, ‘B’, ‘A’, ‘C’, ‘B’, ‘C’, ‘B’, ‘A’, ‘C’, ‘A’]
}, index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(df)
print(“=============================”)
df1 = df.groupby([“DDD”])[“AAA”].sum().reset_index()
df2 = df1.sort_values(by=‘AAA’, ascending=False)
print(df1)
print(“=============================”)
print(df2)
2.11.4横向排序 axis=1
以索引的标签为1,升序,为例:
import pandas as pd
df = pd.DataFrame({
‘AAA’: [120, 101, 106, 101, 101, 120, 115, 112, 117, 132],
‘BBB’: [115, 100, 110, 100, 100, 120, 113, 114, 130, 111],
‘CCC’: [109, 112, 125, 112, 112, 115, 120, 122, 110, 119]
}, index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(df)
print(“=============================”)
按照索引值(标签的值)为1的行,升序排序
df1 = df.sort_values(by=1, ascending=True, axis=1)
print(df1)
2.11.5 排名 rank()
method参数可以取的值有"average", “first”, “max”, “min”,默认为"average"。
-
average表示排名时如果出现数值相等,则取平均排名,如降序排名,如果第二三四名数值大小相等,则都标记为第(2+3+4)/3=3,即第3名。
-
first 表示排名时如果出现数值相等,则参考在原数据的顺序进行排名
-
max表示排名时如果出现数值相等,则取其最大排名,如降序排名,如果第二三四名数值大小相等,则都标记为第4名。
-
min表示排名时如果出现数值相等,则取其最小排名,如降序排名,如果第二三四名数值大小相等,则都标记为第2名。
import pandas as pd
df = pd.DataFrame({
‘AAA’: [120, 101, 106, 101, 101, 120, 115, 112, 117, 132],
‘BBB’: [115, 100, 110, 100, 100, 120, 113, 114, 130, 111],
‘CCC’: [109, 112, 125, 112, 112, 115, 120, 122, 110, 119]
}, index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(df)
print(“=============================”)
按“销量”列降序排序
df1 = df.sort_values(by=‘AAA’, ascending=False)
顺序排名
df1[‘AAA_order’] = df1[‘AAA’].rank(method=“first”, ascending=False)
df2 = df1[[‘AAA’, ‘AAA_order’]]
print(df2)
==================================================================================
3.1.1准备数据
import pandas as pd
id = [‘xx1’, ‘xx2’, ‘xx3’, ‘xx4’, ‘xx5’]
df = pd.DataFrame({
‘name’: [‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’],
‘age’: [18, 20, 21, 22, 19],
‘gender’: [‘male’, ‘female’, ‘male’, ‘female’, ‘female’],
‘class’: [‘A’, ‘B’, ‘B’, ‘A’, ‘A’]
}, index=id)
保存为excel文件
df.to_excel(‘data.xlsx’)
3.1.2默认方式读取
read_excel()读取excel文件得到的DataFrame,
-
index值默认为0,1,2,3…
-
列名默认为excel中的第一行数据
df = pd.read_excel(‘data.xlsx’)
print(df)
3.1.3设置index_col参数
df1 = pd.read_excel(‘data.xlsx’, index_col=0)
print(df1)
如图,通过index_col=0,将下标为0的列作为索引进行读取。
3.1.4设置header参数
header可以设置列名,默认为0表示首行即列名,
- 如图通过 header=1,将下标为1行作为了列名(第二行)
df2 = pd.read_excel(‘data.xlsx’, header=1) # 设置第1行为列索引
print(df2)
- 当header参数为None时,表示列名为数字0,1,2,3…
df3 = pd.read_excel(‘data.xlsx’, header=None)
print(df3)
3.1.5设置usecols参数
通过usecols参数,传入列位置或标签列表,可以导出指定列
- 传入一个位置
df1 = pd.read_excel(‘data.xlsx’, usecols=[1]) # 通过指定列索引号导入第1列
print(df1)
- 传入多个位置
df2 = pd.read_excel(‘data.xlsx’, usecols=[1, 3])
print(df2)
- 传入多个标签
df3 = pd.read_excel(‘data.xlsx’, usecols=[‘name’, ‘age’])
print(df3)
3.1.6设置sheet_name参数以指定工作簿
可以通过read_excel()的sheet_name参数传入工作簿名称。
如:
import pandas as pd
df = pd.read_excel(‘data_name.xlsx’, sheet_name=‘sheetA’)
df1 = df.head() # 输出前5条数据
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
A5L6v5bCP5ZW-,size_13,color_FFFFFF,t_70,g_se,x_16)
3.1.6设置sheet_name参数以指定工作簿
可以通过read_excel()的sheet_name参数传入工作簿名称。
如:
import pandas as pd
df = pd.read_excel(‘data_name.xlsx’, sheet_name=‘sheetA’)
df1 = df.head() # 输出前5条数据
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-6QMcry7c-1713335893063)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!