1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python编程入门 Python人工智能开发难学吗?零基础的人该如何入门呢? – python

python编程入门 Python人工智能开发难学吗?零基础的人该如何入门呢? – python

时间:2023-01-25 15:16:36

相关推荐

python编程入门 Python人工智能开发难学吗?零基础的人该如何入门呢? – python

1.学习东西的过程是有一个加速度的。刚开始的时候是线形的速度,之后便是一个快速的上升期,然后又回到线形的速度。如果选择好书,一开始也可以处于有加速度的状态,那就是越学越开心,越来越感兴趣,好书常常能够让你做到这样子。

2.尽信书不如无书。有的示例程序看上去显而易见,但是你不拿过去运行一下,自己调试一下,你始终掌握不到其精髓和灵活运用的方法。自己动手改改,你会心悦诚服很多。

3.要善于总结。如果你光学不练,这是不好的,如果你不善于总结,这也是不好的。语言都是用不上的时候开始学习。都是用的上的时候开始复习。要是用得上的时候开始学习,除非你抗压能力一流,不然偶想你心情烦躁,效果会很不好的。学习的时候多总结一下,复习的时候可以翻出来看看,这样就不至于完全荒废了,并且恢复相当快速。

如果自制力不好,也可以选择专业的学习方式,合理安排自己的课程,收获真正的Python技术知识。在这里,大家如果真的用心学习,完全不用担心毕业后找不到好工作。

大家使用过的很多产品都是基于 Python 开发的,国内的豆瓣、知乎、果壳,国外的 YouTube、Dropbox 和 Reddit 等也是诞生于 Python 的框架之下。

掌握 Python 后,你还可以用更短的时间,更高的效率学习和掌握机器学习,甚至是深度学习的技能。

越来越多的人们都使用 Python 来编写框架、制作工具,因此会吸引更多人来使用。

不外乎这几种,有的人想要通过学习 Python 转行成程序员,实现行业上的转变;有的人希望通过学习 Python ,在现有岗位上提升自己;当然也有很多人只是从众,看到这门语言火,学的人多,自己也要凑凑热闹。

明确这个目的后,你就要朝着自己选定的方向学习,这样学习起来就没有那么痛苦,每天可以看到自己的进步;另外,你可以根据自己的目标,去针对性的学习,例如运维开发、web服务、数据分析、机器学习等各个方面的细分领域,去安排自己的学习路径。

学习方法:

1.学习要每天坚持打卡,学习是一件坚持的事情,而不是三分钟热血,说学习,学了几天就不学了。每天坚持学习,每天进行学习总结,温习之前学的内容,在进行新的学习。这样有利于你的学习进度。

2.加入一个学习团,学习需要氛围,在大家都在火热的学习时候,你也会收到氛围的影响,使你也跟着学习。并且你再遇到问题的同时,你可以跟大家分享你的问题,让大家来解决问题。多种解决方案,你可以选择他们的优点来结合自己的问题进行改正。

3.多看一些大神们的经验分享,分享自己的学习路线,学习经验总结,让你在学习的道路上少走弯路。

4.找一个学习伙伴,上学的时候都会有同桌,在组学的道路上怎么能没有伙伴呢。伙伴之间可以互相监督,互相学习借鉴。大家一起努力学习,共同进步。

5.最重要的是要上机操作,实战项目。多多参加练手,只有动手操作才会使你学习的东西变成你自己的东西。而光看,光听到时候你就会上机操作的时候会大脑一片空白。对与项目无从下手。多参与项目使自己的动手能力变强,使你得学习进度加快。

推荐教程:Python400集,百战程序员出品,是偶目前看到网上这么多入门视频中最值得推荐的,干货满满,前后衔接,而且特别适合初学者。内容也特别多,高淇老师的讲课风格也很有意思,可以去看看,坚持学完入门肯定没问题了。

关于作者:Python King,Python高手大师

在使用Pandas之前,需要导入Pandas包。惯例是将pandas简写为pd,命令如下:

import pandas as pd

Pandas包含两个主要的数据结构:Series和DataFrame。其中最常用的是DataFrame,下面大家先来学习一下DataFrame。

01 DataFrame入门

DataFrame是一个表格型的数据结构。每列都可以是不同的数据类型(数值、字符串、布尔值等)。

DataFrame既有行索引也有列索引,这两种索引在DataFrame的实现上,本质上是一样的。但在使用的时候,往往是将列索引作为区分不同数据的标签。DataFrame的数据结构与SQL数据表或者Excel工作表的结构非常类似,可以很方便地互相转换。

下面先来创建一个DataFrame,一种常用的方式是使用字典,这个字典是由等长的list或者ndarray组成的,示例代码如下:

data={‘A’:[‘x’,’y’,’z’],’B’:[1000,2000,3000],’C’:[10,20,30]}df=pd.DataFrame(data,index=[‘a’,’b’,’c’])df

运行结果如图3-2所示。

▲图3-2

大家可以看到,DataFrame主要由如下三个部分组成。

数据,位于表格正中间的9个数据就是DataFrame的数据部分。索引,最左边的a、b、c是索引,代表每一行数据的标识。这里的索引是显式指定的。如果没有指定,会自动生成从0开始的数字索引。列标签,表头的A、B、C就是标签部分,代表了每一列的名称。

下文列出了DataFrame函数常用的参数。其中,“类似列表”代表类似列表的形式,比如列表、元组、ndarray等。一般来说,data、index、columns这三个参数的使用频率是最高的。

data:ndarray/字典/类似列表 | DataFrame数据;数据类型可以是ndarray、嵌套列表、字典等index:索引/类似列表 | 使用的索引;默认值为range(n)columns:索引/类似列表 | 使用的列标签;默认值为range(n)dtype:dtype | 使用(强制)的数据类型;否则通过推导得出;默认值为Nonecopy:布尔值 | 从输入复制数据;默认值为False

其中data的数据类型有很多种。

下文列举了可以作为data传给DataFrame函数的数据类型。

可以传给DataFrame构造器的数据:

二维ndarray:可以自行指定索引和列标签嵌套列表或者元组:类似于二维ndarray数据、列表或元组组成的字典:每个序列变成一列。所有序列长度必须相同由Series组成的字典:每个Series会成为一列。如果没有指定索引,各Series的索引会被合并另一个DataFrame:该DataFrame的索引将会被沿用

前面生成了一个DataFrame,变量名为df。下面大家来查看一下df的各个属性值。

获取df数据的示例代码如下:

df.values

输出结果如下:

array([[‘x’, 1000, 10], [‘y’, 2000, 20], [‘z’, 3000, 30]], dtype=object)

获取df行索引的示例代码如下:

df.index

输出结果如下:

Index([‘a’, ‘b’, ‘c’], dtype=’object’)

获取df列索引(列标签)的示例代码如下:

df.columns

输出结果如下:

Index([‘A’, ‘B’, ‘C’], dtype=’object’)

可以看到,行索引和列标签都是Index数据类型。

创建的时候,如果指定了列标签,那么DataFrame的列也会按照指定的顺序进行排列,示例代码如下:

df=pd.DataFrame(data,columns=[‘C’,’B’,’A’],index=[‘a’,’b’,’c’])df

运行结果如图3-3所示。

▲图3-3

如果某列不存在,为其赋值,会创建一个新列。大家可以用这种方法来添加一个新的列:

df[‘D’]=10df

运行结果如图3-4所示。

▲图3-4

使用del命令可以删除列,示例代码如下:

del df[‘D’]df

运行结果如图3-5所示。

▲图3-5

添加行的一种方法是先创建一个DataFrame,然后再使用append方法,代码如下:

new_df=pd.DataFrame({‘A’:’new’,’B’:4000,’C’:40},index=[‘d’])df=df.append(new_df)df

运行结果如图3-6所示。

▲图3-6

或者也可以使用loc方法来添加行,示例代码如下:

df.loc[‘e’]=[‘new2’,5000,50]df

运行结果如图3-7所示。

▲图3-7

loc方法将在后面的内容中详细介绍。

索引的存在,使得Pandas在处理缺漏信息的时候非常灵活。下面的示例代码会新建一个DataFrame数据df2。

df2=pd.DataFrame([1,2,3,4,5],index=[‘a’,’b’,’c’,’d’,’z’],columns=[‘E’])df2

运行结果如图3-8所示。

▲图3-8

如果现在想要合并df和df2,使得df有一个新的列E,那么可以使用join方法,代码如下:

df.join(df2)

运行结果如图3-9所示。

▲图3-9

可以看到,df只接受索引已经存在的值。由于df2中没有索引e,所以是NaN值,而且df2索引为z的值已经丢失了。为了保留df2中索引为z的值,大家可以提供一个参数,告诉Pandas如何连接。示例代码如下:

df.join(df2,how=’outer’)

运行结果如图3-10所示。

▲图3-10

在上述代码中,how=’outer’表示使用两个索引中所有值的并集。连接操作的其他选项还有inner(索引的交集)、left(默认值,调用方法的对象的索引值)、right(被连接对象的索引值)等。

在金融数据分析中,大家要分析的往往是时间序列数据。下面介绍一下如何基于时间序列生成DataFrame。为了创建时间序列数据,大家需要一个时间索引。这里先生成一个DatetimeIndex对象的日期序列,代码如下:

dates=pd.date_range(‘0101’,periods=8)dates

输出结果如下:

DatetimeIndex([‘-01-01’, ‘-01-02’, ‘-01-03’, ‘-01-04’,‘-01-05’, ‘-01-06’, ‘-01-07’, ‘-01-08′],dtype=’da tetime64[ns]’, freq=’D’)

可以看到,使用Pandas的date_range函数生成的是一个DatetimeIndex对象。date_range函数的参数及说明如下所示:

start:字符串/日期时间 | 开始日期;默认为Noneend:字符串/日期时间 | 结束日期;默认为Noneperiods:整数/None | 如果start或者end空缺,就必须指定;从start开始,生成periods日期数据;默认为Nonefreq:dtype | 周期;默认是D,即周期为一天。也可以写成类似5H的形式,即5小时。其他的频率参数见下文tz:字符串/None | 本地化索引的时区名称normalize:布尔值 | 将start和end规范化为午夜;默认为Falsename:字符串 | 生成的索引名称

date_range函数频率的参数及说明如下所示:

B:交易日C:自定义交易日(试验中)D:日历日W:每周M:每月底SM:半个月频率(15号和月底)BM:每个月份最后一个交易日CBM:自定义每个交易月MS:日历月初SMS:月初开始的半月频率(1号,15号)BMS:交易月初CBMS:自定义交易月初Q:季度末BQ:交易季度末QS:季度初BQS:交易季度初A:年末BA:交易年度末AS:年初BAS:交易年度初BH:交易小时H:小时T,min:分钟S:秒L,ms:毫秒U,us:微秒N:纳秒

接下来,大家再基于dates来创建DataFrame,代码如下:

df=pd.DataFrame(np.random.randn(8,4),index=dates,columns=list(‘ABCD’))df

运行结果如图3-11所示。

▲图3-11

有了df,大家就可以使用多个基于DataFrame的内建方法了,下面来看看相关的示例。

按列求总和,代码如下:

df.sum()

输出结果如下:

A 0.241727B -0.785350C -0.547433D -1.449231dtype: float64

按列求均值,代码如下:

df.mean()

输出结果如下:

A 0.030216B -0.098169C -0.068429D -0.181154dtype: float64

按列求累计总和,代码如下:

df.cumsum()

运行结果如图3-12所示。

▲图3-12

使用describe一键生成多种统计数据,代码如下:

df.describe()

运行结果如图3-13所示。

▲图3-13

可以根据某一列的值进行排序,代码如下:

df.sort_values(‘A’)

运行结果如图3-14所示。

▲图3-14

根据索引(日期)排序(这里是倒序),代码如下:

df.sort_index(ascending=False)

运行结果如图3-15所示。

▲图3-15

选取某一列,返回的是Series对象,可以使用df.A,代码如下:

df[‘A’]

输出结果如下:

-01-01 -1.142350-01-02 -0.816178-01-03 0.030206-01-04 1.930175-01-05 0.571512-01-06 0.220445-01-07 0.292176-01-08 -0.844260Freq: D, Name: A, dtype: float64

使用[]选取某几行,代码如下:

df[0:5]

运行结果如图3-16所示。

▲图3-16

根据标签(Label)选取数据,使用的是loc方法,代码如下:

df.loc[dates[0]]

输出结果如下:

A -1.142350B -1.999351C 0.772343D -0.851840Name: -01-01 00:00:00, dtype: float64

再来看两个示例代码。

df.loc[:,[‘A’,’C’]]

运行结果如图3-17所示。

▲图3-17

df.loc[‘0102′:’0106’,[‘A’,’C’]]

运行结果如图3-18所示。

▲图3-18

需要注意的是,如果只有一个时间点,那么返回的值是Series对象,代码如下:

df.loc[‘0102’,[‘A’,’C’]]

输出结果如下:

A -0.816178C -0.595195Name: -01-02 00:00:00, dtype: float64

如果想要获取DataFrame对象,需要使用如下命令:

df.loc[‘0102′:’0102’,[‘A’,’C’]]

运行结果如图3-19所示。

▲图3-19

上面介绍的是loc方法,是按标签(索引)来选取数据的。有时候,大家会希望按照DataFrame的绝对位置来获取数据,比如,如果想要获取第3行第2列的数据,但不想按标签(索引)获取,那么这时候就可以使用iloc方法。

根据位置选取数据,代码如下:

df.iloc[2]

输出结果如下:

A 0.030206B 0.759953C -1.446549D -0.874364Name: -01-03 00:00:00, dtype: float64

再来看一个示例:

df.iloc[3:6,1:3]

运行结果如图3-20所示。

▲图3-20

注意:对于DataFrame数据类型,可以使用[]运算符来进行选取,这也是最符合习惯的。但是,对于工业代码,推荐使用loc、iloc等方法。因为这些方法是经过优化的,拥有更好的性能。

有时,大家需要选取满足一定条件的数据。这个时候可以使用条件表达式来选取数据。这时传给df的既不是标签,也不是绝对位置,而是布尔数组(Boolean Array)。下面来看一下示例。

例如,寻找A列中值大于0的行。首先,生成一个布尔数组,代码如下:

df.A>0

输出结果如下:

-01-01 False-01-02 False-01-03True-01-04True-01-05True-01-06True-01-07True-01-08 FalseFreq: D, Name: A, dtype: bool

可以看到,这里生成了一个Series类型的布尔数组。可以通过这个数组来选取对应的行,代码如下:

df[df.A>0]

运行结果如图3-21所示。

▲图3-21

从结果可以看到,A列中值大于0的所有行都被选择出来了,同时也包括了BCD列。

现在大家要寻找df中所有大于0的数据,先生成一个全数组的布尔值,代码如下:

df>0

运行结果如图3-22所示。

▲图3-22

下面来看一下使用df>0选取出来的数据效果。由图3-23可以看到,大于0的数据都能显示,其他数据显示为NaN值。

df[df>0]

运行结果如图3-23所示。

▲图3-23

再来看一下如何改变df的值。首先大家为df添加新的一列E,代码如下:

df[‘E’]=0df

运行结果如图3-24所示。

▲图3-24

使用loc改变一列值,代码如下:

df.loc[:,’E’]=1df

运行结果如图3-25所示。

▲图3-25

使用loc改变单个值,代码如下:

df.loc[‘-01-01′,’E’] = 2df

运行结果如图3-26所示。

▲图3-26

使用loc改变一列值,代码如下:

df.loc[:,’D’] = np.array([2] * len(df))df

运行结果如图3-27所示。

▲图3-27

可以看到,使用loc的时候,x索引和y索引都必须是标签值。对于这个例子,使用日期索引明显不方便,需要输入较长的字符串,所以使用绝对位置会更好。这里可以使用混合方法,DataFrame可以使用ix来进行混合索引。比如,行索引使用绝对位置,列索引使用标签,代码如下:

df.ix[1,’E’] = 3df

运行结果如图3-28所示。

▲图3-28

ix的处理方式是,对于整数,先假设为标签索引,并进行寻找;如果找不到,就作为绝对位置索引进行寻找。所以运行效率上会稍差一些,但好处是这样操作比较方便。

对于ix的用法,需要注意如下两点。

假如索引本身就是整数类型,那么ix只会使用标签索引,而不会使用位置索引,即使没能在索引中找到相应的值(这个时候会报错)。如果索引既有整数类型,也有其他类型(比如字符串),那么ix对于整数会直接使用位置索引,但对于其他类型(比如字符串)则会使用标签索引。

总的来说,除非想用混合索引,否则建议只使用loc或者iloc来进行索引,这样可以避免很多问题。

02 Series

Series类似于一维数组,由一组数据以及相关的数据标签(索引)组成。示例代码如下:

import pandas as pds=pd.Series([1,4,6,2,3])s

Out:

0 11 42 63 24 3

在这段代码中,大家首先导入pandas并命名为pd,然后向Series函数传入一个列表,生成一个Series对象。在输出Series对象的时候,左边一列是索引,右边一列是值。由于没有指定索引,因此会自动创建0到(N-1)的整数索引。也可以通过Series的values和index属性获取其值和索引。示例代码如下:

s.values

Out:

array([1, 4, 6, 2, 3], dtype=int64)

s.index

Out:

Int64Index([0, 1, 2, 3, 4], dtype=’int64′)

当然,大家也可以对索引进行定义,代码如下:

s=pd.Series([1,2,3,4],index=[‘a’,’b’,’c’,’d’])s

Out:

a 1b 2c 3d 4

在这里,大家将索引定义为a、b、c、d。这时也可以用索引来选取Series的数据,代码如下:

s[‘a’]

Out:

1

s[[‘b’,’c’]]

Out:

b 2c 3

对Series进行数据运算的时候也会保留索引。示例代码如下:

s[s>1]

Out:

b 2c 3d 4

s*3

Out:

a3b6c9d 12

Series最重要的功能之一是在不同索引中对齐数据。示例代码如下:

s1=pd.Series([1,2,3],index=[‘a’,’b’,’c’])s2=pd.Series([4,5,6],index=[‘b’,’c’,’d’])s1+s2

Out:

a NaNb6c8d NaN

Series的索引可以通过赋值的方式直接修改,示例代码如下:

s.index

Out:

Index([u’a’, u’b’, u’c’, u’d’], dtype=’object’)

s.index=[‘w’,’x’,’y’,’z’]s.index

Out:

Index([u’w’, u’x’, u’y’, u’z’], dtype=’object’)

s

Out:

w 1x 2y 3z 4

python可以说近几年随着人工智能火起来的编程语言,你想的到的和你想不到的python都可以帮你实现,爬虫、web、数据和文本处理等等。

题主关心的个人自学python需要多久学会,偶觉得可以先考虑下面几个方面:

是否具备编程所需的逻辑思维能力

作为IT行业从业者,之前有人问过偶,是不是学会了基础的JAVA语言,以后学其他的编程语言就轻松了,偶认为不然,身边一个朋友大学学的Java,毕业工作之后一直不温不热,在近几年Java转python的热潮里,改行转了python,但还是不温不火,用他的话说还是啃不透,所以偶觉得你有没有其他编程语言基础是其次,重要的是你具备编程所需的逻辑思维能力,哪怕说上学时候数学好,和别人吵架会抓理,表达能力强这都是逻辑好的表现,逻辑思维好的人,学习编程会轻松很多。

是不是乐于学习python编程

如果说逻辑能力是天赋,那对于python编程的兴趣就是后天因素了,虽然偶认为python是所有偶所了解的编程语言中,最简洁、最有意思的,但是再有意思的编程也是枯燥的,学习任何编程语言都需要静下心来好好“啃”,不管你是因为喜欢热爱编程,还是说冲着程序开发的高薪,只要有动力有恒心,就能学好。如果和题主说的自学,还需要时间和精力上的投入。

python个人自学要多久

下面偶正式回答题主问题,如果你具备了偶上面所说的编程逻辑思维能力,也拥有一颗愿意学习python的恒心,以偶自己学习python举例,供题主参考:

一个月掌握基础python语言

两个月熟悉爬虫、数据分析方面的学习

python的方向很多,偶暂时需要使用的就是爬虫和数据分析,从基础到完成这两个部分的深化学习,一个大概三个月的时间,偶也是利用晚上没事的时候学习,也不是天天都学,一周五天左右,每次三个小时。

给0基础自学的建议

如果0基础从头学习python,依靠买一本书回来自己看,很难入门,建议到网上搜索相关的视频课程,结合视频系统的进行学习,偶认为编程是一种三分学七分练的东西,python你学会了他,还要会用他,如果不会用,他仅仅是一个个单调的函数而已,但纯看书是学不好python的,要多多结合知识给自己出出小练习。

最后用Python之父吉多·范罗苏姆的话“人生苦短,偶用python”,希望题主可以在学习python的道路上一帆风顺,有什么不明白的可以评论或者私信偶。

更多科技及数码问答,关注头条号:MZ科技

总结,以上就是关于python编程入门以及Python人工智能开发难学吗?零基础的人该如何入门呢的经验分享,卡友有疑问可以加wx或扫码加群!

python编程入门 Python人工智能开发难学吗?零基础的人该如何入门呢? – python – 前端 python readline 结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。