找回密码
 会员注册
查看: 29|回复: 0

数据分析入门人工智能、数据分析和深度学习是什么关系?如何快速入门PythonPandas?

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64454
发表于 2024-9-12 12:18:20 | 显示全部楼层 |阅读模式
目录一、前言二、数据分析和深度学习的区别三、人工智能四、深度学习五、Pandas六、Pandas数据结构6.1Series-序列6.2DataFrame-数据框七、输入、输出7.1读取/写入CSV7.2读取/写入Excel7.3读取和写入SQL查询及数据库表八、调用帮助九、选择(这里可以参考上一篇文章的NumpyArrays相关部分)9.1取值9.2选取、布尔索引及设置值9.2.1按位置9.2.2按标签9.2.3按标签/位置9.2.4布尔索引9.2.5设置值十、删除数据十一、排序十二、查询序列与数据框的信息12.1基本信息12.2汇总十三、应用函数十四、数据对齐14.1内部数据对齐14.2使用Fill方法运算十五、后记本文详细介绍了人工智能、数据分析和深度学习之间的关系,并就数据分析所需的Pandas库做了胎教般的入门引导。祝读得开心!一、前言  本文是原《数据分析大全》、现改名为《数据分析》专栏的第二篇,我在写这篇文章的时候突然意识到——单靠我是不可能把数据分析的方方面面都讲得明明白白,只是是我自己知道什么,然后再输出我所明白的知识罢了。所以《数据分析大全》的“大全”两个字还真是担不起,就改成《数据分析》了。  本篇主要介绍数据分析中PythonPandas相关知识点,打算通过这一篇帮助大家顺利入门PythonPandas,掌握基本的用法和思想。  上一期《数据分析大全》——Numpy基础可能讲的太过侧重代码而忽略了讲解,如果是还未入门的小白可能看完都不知道讲了啥、为什么要讲这些。  实用性强和门槛低才是好文章的必要因素,像之前的那一篇就太过强调实用了。结果文章是简短了,可除了已经入门或从事相关工作的同行外,没几个能明白讲了啥的。因此,本篇吸取之前的教训,在交稿前又认真地完善了文章的措辞,加上段落间的衔接和引例等语句,方便小白也能看懂。  让我先来填一下上期的坑,聊聊数据分析和深度学习都有什么区别和联系。二、数据分析和深度学习的区别  数据分析也好,深度学习也罢,都是一种新的技术,而新技术的产生则是为了解决现实中遇到的问题。我们可以姑且把现实问题分为简单问题和复杂问题。简单问题,只需要简单分析,我们使用数据分析就够了。而复杂问题,则需要复杂分析,我们这才使用机器学习。  ——那什么是简单问题,什么是复杂问题呢?  简单问题就比如是今年学院奖学金的评选情况、今天公司的业绩这类问题,数据量不是很大,我们就用数据分析。  而我们天天使用的某宝、某东这类购物APP,它会根据你的历史购物习惯(这里面有着海量的数据),来给推荐你可能感兴趣的商品。那是如何做到的呢?对于这种复杂问题,这类APP背后使用的就是机器学习以及相应的推荐算法。三、人工智能  人工智能的范围很广,广义上的人工智能泛指通过计算机(机器)实现人的头脑思维,使机器像人一样去决策。  机器学习是实现人工智能的一种技术。在机器学习分很多方法(算法),不同的方法解决不同的问题。深度学习是机器学习中的一个分支方法。  总结一下:人工智能、机器学习和深度学习的关系是:人工智能包含机器学习,机器学习包含深度学习(方法),即数据分析>机器学习>深度学习>机器学习。四、深度学习  深度学习在图像,语音等富媒体的分类和识别上取得了非常好的效果,所以各大研究机构和公司都投入了大量的人力做相关的研究和开发。  举个众人皆知的例子,那就是2016年谷歌旗下DeepMind公司开发的阿尔法围棋(AlphaGo)战胜人类顶尖围棋选手。阿尔法围棋的主要工作原理就是“深度学习”。五、Pandas  咳咳,扯远了,本篇文章要讲的Pandas还没说呢。  在学习任何东西之前,我们都应该明白两个问题——它能干什么?我能用它做什么?我相信肯定有人和我在入门数据结构时一样,对这个叫“Pandas”的库有很多问题——Pandas是什么?Pandas一词是怎么来的?Pandas是做什么的?…让我们来一起解决这些困惑。  首先,Pandas是什么?是Panda→熊猫吗?这听起来很Cool…但很显然我们不可能用熊猫来帮助我们进行数据分析的工作。其实,Pandas是一个开放源码、BSD许可的库,提供高性能、易于使用的数据结构和数据分析工具。  那么,Pandas一词是怎么来的呢?Pandas名字的由来衍生自术语“paneldata”(面板数据)和“Pythondataanalysis”(Python数据分析。总的来说,Pandas是一个强大的分析结构化数据的工具集,基础是Numpy(提供高性能的矩阵运算)。  听起来明白点了,让我们再来看看Pandas究竟是干什么用的。Pandas可以从各种文件格式比如CSV、JSON、SQL、MicrosoftExcel导入数据。Pandas可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。Pandas广泛应用在学术、金融、统计学等各个数据分析领域。  让我们来总结一下:Pandas是基于Numpy创建的Python库,为Python提供了易于使用的数据结构和数据分析工具。只需要记住这句话,就可以继续进行我们接下来的学习了!  在Python中,我们可以使用以下语句导入Pandas库:>>>importpandasaspd1六、Pandas数据结构6.1Series-序列  首先我们来看看序列,PandasSeries类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。Series由索引(index)和列组成,函数如下:pandas.Series(data,index,dtype,name,copy)1  让我们对上的参数进行简单的说明:  data:一组数据(ndarray类型)。  index:数据索引标签,如果不指定,默认从0开始。  dtype:数据类型,默认会自己判断。  name:设置名称。  copy:拷贝数据,默认为False。  想想看,要是实现存储任意类型数据的一维数组(如下图),应该怎么实现呢?  这边附上了实现代码:>>>s=pd.Series([3,-5,7,4],index=['a','b','c','d'])16.2DataFrame-数据框  DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(比如数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。  我们要是想实现上方的存储不同类型数据的二维数组,可以这么实现:>>>data={'Country':['Belgium','India','Brazil'],'Capital':['Brussels','NewDelhi','Brasília'],'Population':[11190846,1303171035,207847528]}>>>df=pd.DataFrame(data,columns=['Country','Capital','Population'])123七、输入、输出7.1读取/写入CSV  在解决这个问题前先来了解一下,什么是CSV:CSV(Comma-SeparatedValues,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。  Pandas可以很轻松地处理CSV文件:>>>pd.read_csv('file.csv',header=None,nrows=5)>>>df.to_csv('myDataFrame.csv')127.2读取/写入Excel  在解决问题时,往往涉及到从Excel读取或写入数据,以下给出了相关的代码实现。也有读取内含多个表的Excel中数据的代码实现:>>>pd.read_excel('file.xlsx')>>>pd.to_excel('dir/myDataFrame.xlsx',sheet_name='Sheet1')#读取内含多个表的Excel>>>xlsx=pd.ExcelFile('file.xls')>>>df=pd.read_excel(xlsx,'Sheet1')123457.3读取和写入SQL查询及数据库表  关于读取和写入SQL查询及数据库表的代码如下:>>>fromsqlalchemyimportcreate_engine>>>engine=create_engine('sqlite:///:memory:')>>>pd.read_sql("SELECT*FROMmy_table;",engine)>>>pd.read_sql_table('my_table',engine)>>>pd.read_sql_query("SELECT*FROMmy_table;",engine)12345read_sql()是read_sql_table()与read_sql_query()的便捷打包器>>>pd.to_sql('myDf',engine)1八、调用帮助  当然,在开发过程中遇到的问题肯定是千奇百怪的。除了在技术论坛上发帖求问、求助师兄师姐,我们也要学会自己查看帮助文档:  调用帮助的代码如下:>>>help(pd.Series.loc)1九、选择(这里可以参考上一篇文章的NumpyArrays相关部分)9.1取值  在取值时,我们可以取序列的值,也可以取数据框的值。以下是取序列值和取数据框子集的代码实现,可以参考一下:#取序列的值>>>s['a']-5#取数据框的子集>>>df[1:]CountryCapitalPopulation1IndiaNewDelhi13031710352BrazilBrasília2078475281234567899.2选取、布尔索引及设置值9.2.1按位置  在我们根据需求选择某些数据时,往往涉及到按行与列的位置选择某值,以下给出了具体的代码:#按行与列的位置选择某值>>>df.iloc[[0],[0]]'Belgium'>>>df.iat([0],[0])'Belgium'123459.2.2按标签  按行与列的名称选择某值的代码实现如下:#按行与列的名称选择某值>>>df.loc[[0],['Country']]'Belgium'>>>df.at([0],['Country'])'Belgium'123459.2.3按标签/位置  我们也可以选择某行或者选择某列:#选择某行>>>df.ix[2]CountryBrazilCapitalBrasíliaPopulation207847528#选择某列>>>df.ix[:,'Capital']0Brussels1NewDelhi2Brasília>>>df.ix[1,'Capital']'NewDelhi'123456789101112139.2.4布尔索引  Pandas支持物理顺序进行选取,也支持通过逻辑进行取值。下面给出了几个例子:>>>s[~(s>1)]#序列S中没有大于1的值>>>s[(s2)]#序列S中小于-1或大于2的值>>>df[df['Population']>1200000000]#序列S中小于-1或大于2的值1239.2.5设置值  还可以设置索引项的值:>>>s['a']=6#将序列S中索引为a的值设为61十、删除数据  按索引删除序列的值:>>>s.drop(['a','c'])#按索引删除序列的值(axis=0)>>>df.drop('Country',axis=1)#按索引删除序列的值(axis=0)12十一、排序  基本的增删查改都介绍完了,这里再介绍以下排序。下面给出了按索引排序、按某列的值排序、按某列的值排序的另解的代码:>>>df.sort_index()#按索引排序>>>df.sort_values(by='Country')#按某列的值排序>>>df.rank()#按某列的值排序123十二、查询序列与数据框的信息12.1基本信息  排序也介绍完了,再来说说查询吧。这里给出了获取行、列索引和获取数据框基本信息的两种方法:>>>df.shape#(行,列))>>>df.index#获取索引>>>df.columns#获取索引>>>df.info()#获取数据框基本信息>>>df.count()#获取数据框基本信息1234512.2汇总  常见的功能实现函数汇总如下:>>>df.sum()#合计>>>df.cumsum()#合计>>>df.min()/df.max()#最小值除以最大值>>>df.idxmin()/df.idxmax()#最小值除以最大值>>>df.describe()#基础统计数据>>>df.mean()#平均值>>>df.median()#中位数1234567十三、应用函数  这里给出了几个常用的函数的调用方法:>>>f=lambdax:x*2#应用匿名函数lambda>>>df.apply(f)#应用函数>>>df.applymap(f)#应用函数123十四、数据对齐14.1内部数据对齐  如有不一致的索引,则使用NA值:>>>s3=pd.Series([7,-2,3],index=['a','c','d'])>>>s+s3a10.0bNaNc5.0d7.012345614.2使用Fill方法运算  还可以使用Fill方法进行内部对齐运算:>>>s.add(s3,fill_value=0)a10.0b-5.0c5.0d7.0>>>s.sub(s3,fill_value=2)>>>s.div(s3,fill_value=4)>>>s.mul(s3,fill_value=3)12345678十五、后记  本期关于人工智能、数据分析和深度学习的关系,人工智能、深度学习的相关内容也介绍完了,本文的重点放在了Pandas的快速入门方面,如果能在科研项目、工程开发和日常学习方面帮到大家,就最好不过了!下期会接着介绍Pandas进阶方向的知识(因为这篇写得太多了,就拆成两篇发了)。  非常感谢大家的阅读,也欢迎大家提出宝贵的建议!我们下周见!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 00:01 , Processed in 0.701384 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表