手把手学爬虫第五弹——数据清洗与数据分析,2024年最新面试总结和面试感想

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

  • 创建方式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)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值