先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
正文
- 创建方式3
dic_data = {‘a’:12,‘b’:14,‘c’:20}
obj = pd.Series(dic_data)
obj
ans:
使用字典的方式创建
a 12
b 14
c 20
dtype: int64
DataFrame
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
pandas.DataFrame( data, index, columns, dtype, copy)
参数说明:
data:一组数据(ndarray、series, map, lists, dict 等类型)。
index:索引值,或者可以称为行标签。
columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
dtype:数据类型。
copy:拷贝数据,默认为 False。
- 创建方式1
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])
pd.DataFrame(arr_data)
ans:
基于数组创建
0 1 2
0 a b c
1 d e f
- 创建方式2
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])
pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])
ans:
指定索引创建
N1 N2 N3
0 a b c
1 d e f
- 根据索引获取值
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])
obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])
obj[‘N2’] # 根据索引获取值
ans:
0 b
1 e
Name: N2, dtype: object
- 通过属性访问
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])
obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])
obj.N2 # 通过属性访问
ans:
0 b
1 e
Name: N2, dtype: object
- 添加数据
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])
obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])
obj[‘N4’]=[‘f’,‘g’] # 按索引添加数据
obj
ans:
N1 N2 N3 N4
0 a b c f
1 d e f g
- 删除数据
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’],[‘d’,‘e’,‘f’]])
obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])
obj[‘N4’]=[‘f’,‘g’]
del obj[‘N2’] # del 删除数据
obj
ans:
N1 N3 N4
0 a c f
1 d f g
Pandas索引操作以及高级索引
索引对象
Pandas中的索引都是index对象,又称为索引对象,该对象不可修改。
索引对象不可修改的特性非常重要,这样使得多个数据结构之间能够很安全的共享index对象。
obj1=pd.Series(range(3),index=[‘a’,‘b’,‘c’])
obj2=pd.Series([‘a’,‘b’,‘c’],index=obj1.index)
obj1.index is obj2.index
ans:
True
重置索引
reindex()方法作用是对原索引和新索引进行匹配,即,新索引有缘索引的数据,而原索引数据按照新索引排序。
index, columns:要符合的新标签/索引
method:None 、 backfill 、 bfill、pad、ffill、nearest可选
fill_value:可指定填充缺失值
limit:向前或向后填充的最大连续元素数
DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=nan, limit=None, tolerance=None)
obj=pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])
obj
obj1=obj.reindex([‘a’,‘b’,‘c’,‘x’,‘y’,‘z’]) # 重置索引
obj1
ans:
a 1.0
b 2.0
c 3.0
x NaN
y NaN
z NaN
dtype: float64
索引操作
- Series索引操作
Series的索引用法类似于Numpy数组的索引,但是Series的索引既可以通过索引的位置获取、也可以通过索引的名称获取。
obj=pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])
obj[‘b’] # 通过索引的名称获取
obj[1] # 通过索引的位置获取
ans:
2
- 获取不连续的数据
obj=pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])
obj[‘b’]
ans:
b 2
d 4
f 6
dtype: int64
- DataFrame的索引操作
DataFrame结构既可以包含行索引、也可以包含列索引。其中,行索引是通过index属性进行获取,列索引是通过columns属性进行获取。
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])
obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])
obj.N2
ans:
0 b
1 e
Name: N2, dtype: object
- DataFrame获取不连续的Series对象
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’,],[‘d’,‘e’,‘f’]])
obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’])
obj[[‘N1’,‘N3’]] # 不连续的Series对象
ans:
N1 N3
0 a c
1 d f
- 索引高级操作
loc:基于标签索引(索引名称),用于按标签选取数据。执行切片操作时,既包含起始索引又包含结束索引。
iloc:基于位置索引(整数索引),用于按位置选取数据。执行切片操作时,只包含起始索引,不包含结束索引。
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’,‘d’,‘e’],[‘d’,‘e’,‘f’,‘g’,‘h’]])
obj=pd.DataFrame(arr_data, columns=[‘N1’, ‘N2’, ‘N3’,‘N4’,‘N5’])
obj.loc[:,[‘N2’,‘N5’]] # 基于标签索引
obj.iloc[:,[1,4]] # 基于位置索引9999999999999999999999999999999999
ans:
N2 N5
0 b e
1 e h
数据排序
按索引排序
sort_index(axis=0, level=None, ascending=True, inplace=False, kind=‘quicksort’, na_position=‘last’, sort_remaining=True, by=None)
axis:0按照行名排序;1按照列名排序
level:默认None,否则按照给定的level顺序排列
ascending:默认True升序排列;False降序排列
inplace:默认False,否则排序之后的数据直接替换原来的数据
kind:排序方法
obj=pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])
obj.sort_index() # 升序
obj.sort_index(ascending=False)
ans:
Series按索引升序排序
a 1
b 2
c 3
d 4
e 5
dtype: int64
Series按索引降序排序
e 5
d 4
c 3
b 2
a 1
dtype: int64
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘c’],[‘f’,‘g’,‘h’],[‘d’,‘e’,‘x’]])
obj=pd.DataFrame(arr_data, index=[2,4,6])
obj.sort_index()
obj.sort_index(ascending=False)
ans
DataFrame按索引升序排序
0 1 2
2 a b c
4 f g h
6 d e x
DataFrame按索引降序排序
0 1 2
6 d e x
4 f g h
2 a b c
按值排序
参数即用法同按索引排序。
Series按值排序
obj=pd.Series([1,4,3,8,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])
obj.sort_values() # 升序
ans:
a 1
c 3
b 4
e 5
d 8
dtype: int64
obj.sort_values(ascending=False) # 降序
d 8
e 5
b 4
c 3
a 1
dtype: int64
import numpy as np
import pandas as pd
arr_data = np.array([[‘a’,‘b’,‘y’],[‘f’,‘g’,‘h’],[‘d’,‘e’,‘x’]])
obj=pd.DataFrame(arr_data, index=[2,4,6])
obj
ans:
0 1 2
2 a b y
4 f g h
6 d e x
obj.sort_values(by=2) # 对索引为2的数据排序
0 1 2
4 f g h
6 d e x
2 a b y
读写数据操作
读写CSV文件
Pandas为我们提供了read_csv读取CSV文件,该函数涉及参数较多,但是只有几个常用,具体的在这里我就不一一列举,感兴趣的可以看看这个博客read_csv()。下面写个实例看看怎么使用。
import pandas as pd
f = open(r’E:\python\pythonProject3\venv\Include\电影.csv’,encoding=‘utf-8’)
data = pd.read_csv(f) # 读取csv文件,以‘,’作为分隔
data
读取txt文件
import pandas as pd
f = open(r’E:\python\pythonProject3\venv\Include\电影.txt’,encoding=‘utf-8’)
data = pd.read_table(f) # 读取txt文件,以‘\t’作为分隔
data
读取Excel文件
import pandas as pd
data = pd.read_excel(r’E:\python\pythonProject3\venv\Include\ip.xlsx’) # 读取Excel文件,读取后转换成DataFrame对象
data
读取MySQL数据库
pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
sql:SQL命令字符串
con:连接sql数据库的engine,一般可以用SQLalchemy或者pymysql之类的包建立
index_col: 选择某一列作为index
coerce_float:非常有用,将数字形式的字符串直接以float型读入
columns:要选取的列。一般没啥用,因为在sql命令里面一般就指定要选择的列了
import pandas as pd
import MySQLdb
mysql_cn= MySQLdb.connect(host=‘localhost’, port=3306,user=‘root’, passwd=‘123456’, db=‘movies’)
df = pd.read_sql(‘select * from movice;’, con=mysql_cn)
mysql_cn.close()
df
读取mongodb数据库
读取mongodb同样需要安装驱动,先安装pymongo。
import pandas as pd
import pymongo
client = pymongo.MongoClient(host=‘localhost’,port=27017)
db = client.movies
collection = db.movie
data = pd.DataFrame(list(collection.find()))
data
数据预处理
空值和缺失值处理
在python里面一般空值使用None表示,缺失值使用NaN表示。Pandas中提供了一些用于检查或处理空值和缺失值的函数。
- isnull()函数
该函数的参数只有一个,表示检查空值的对象。
import pandas as pd
from pandas import DataFrame,Series
from numpy import NaN
obj = Series([1,None,NaN])
pd.isnull(obj) # isnull()函数检查缺失值或者空值
ans:
0 False
1 True
2 True # 空值返回True
dtype: bool
- notnull()函数
import pandas as pd
from pandas import DataFrame,Series
from numpy import NaN
obj = Series([1,None,NaN])
pd.notnull(obj) # notnull()函数检查缺失值或者空值
ans:
0 True
1 False
2 False
dtype: bool # 空值返回False
groupby()数据分组
- 通过列名分组
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
ataFrame,Series
from numpy import NaN
obj = Series([1,None,NaN])
pd.isnull(obj) # isnull()函数检查缺失值或者空值
ans:
0 False
1 True
2 True # 空值返回True
dtype: bool
- notnull()函数
import pandas as pd
from pandas import DataFrame,Series
from numpy import NaN
obj = Series([1,None,NaN])
pd.notnull(obj) # notnull()函数检查缺失值或者空值
ans:
0 True
1 False
2 False
dtype: bool # 空值返回False
groupby()数据分组
- 通过列名分组
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-EOn7TVQ7-1713250961764)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!