只学python数据分析这一块需要多长时间?

2020-05-09 10:15发布

2条回答
春风
2楼 · 2020-05-09 10:58

python数据分析的门槛较低,如果是python零基础开始学,需要先学习一点python基础的知识,这一阶段需要30天左右,之后就可以开始学习数据分析方面知识,如:pandas,numpy等等,学习这些知识比较快,10天左右就能把基础部分学完,之后可以通过一些大型案例提升自己。

卡卡
3楼 · 2020-12-14 09:35






网上例子是基于2.7版的,花了一个周末挑选了一些比较有代表性的写成了3.7版,案例为夯实基础用的,为了避免大家做无用功,删除了那些鸡肋的案例


文章目录

分解质因数高空抛物画菱形斐波那契数列II阶乘求和递归求等差数列逆序打印字母识词列表转字符串作用域tryexceptbreak练习lambda表达式组成list的巧妙用法filter函数三元运算mapreducelistrandomlist的extendor+输出杨辉三角第n行find字符串查找list中最大最小值旋转数列ifnot猴子分桃子join字符串拼接随机奇数判断能被多少位9整除打印多个相同字符串解码列表的拓展用法time模块用法分析子串在母字符串出现次数磁盘写入列表转字典拉链函数zip用法







分解质因数

defcal(n):

list=[]

ifnotisinstance(n,int)orn<=2:

return"notintor<3>

flag=1

whileflag:

foriinrange(2,int(n+1)):

ifn%i==0:

list.append(i)

n/=i

ifn==1:

flag=0

break

returnlist



print(cal(28))


高空抛物

题目一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

deftest(n):

base=10

sum=10

ifn==1:

returnsum

foriinrange(1,n):

base/=2

sum+=base*2

returnsum


print(test(3))


画菱形

defdraw(num):

a="*"*(2*(4-num)+1)

print(a.center(9,''))

ifnum!=1:

draw(num-1)

print(a.center(9,''))#此句从最底层draw(1)到draw(4)执行

draw(4)

    *

***

*****

*******

*****

***

*


斐波那契数列II

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

#方法一

defadd(n):

ifn==1:

return2

elifn==2:

return3

returnadd(n-1)+add(n-2)


defadd2(n):

ifn==1:

return1

elifn==2:

return2

returnadd2(n-1)+add2(n-2)


sum=0

foriinrange(1,21):

sum+=add(i)/add2(i)


print(sum)


#方法二

a=2.0

b=1.0

s=0

forninrange(1,21):

s+=a/b

a,b=a+b,a

print(s)


阶乘求和

求1+2!+3!+…+20!的和。

deftest(n):

ifn==1orn==2:

returnn

else:

returnn*test(n-1)


sum=0

foriinrange(1,21):

sum+=test(i)


print(sum)


递归求等差数列

deftest(n):

ifn==1:

return10#递归的核心在于可以溯源,此类型的源就是No.1=10

else:

return2+test(n-1)#2是等差的差值


逆序打印

a='testing'


print(a[::-1])#逆序打印


字母识词

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

#下次自己写



列表转字符串

list=['b','c','d']

strs=''

print(strs.join(str(a)forainlist))#python独有语法结构


作用域

在if-elif-else、for-else、while、try-except\try-finally等关键字的语句块中并不会产成作用域

ifTrue:

var=100

print(var)

print('******')

print(var)#都是100


tryexceptbreak练习

whileTrue:

try:

n=float(input('请输入一个数字:'))

except:

print("输入异常")

continue

dn=n**2

ifdn>50:

break


lambda表达式

lambda表达式支持有限逻辑的函数

g=lambdax:x+1#基础语法


print(g(2))

############################

g=lambdax,y:x+y+1#双变量


print(g(3,4))

############################

#lambda存在意义就是对简单函数的简洁表示





组成list的巧妙用法

print(list(iforiinrange(10)))#直接用range(10)会报错,必须单元素罗列

l=[1foriinrange(n)]#可指定列表长度


filter函数

filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素放到新列表中。

defis_odd(n):

returnn%2==1



l=list(iforiinrange(10))


a=filter(is_odd,l)


foriina:

print(i)


#方法二

l=list(iforiinrange(10))


a=filter(lambdax:x%2==1,l)#简单函数可以用lambda表达式来实现


foriina:

print(i)

#a=filter(lambdax:x%2,l)这样写也对

#原因:返回值是0python默认是false也能过滤掉


三元运算

name='wupeiqi'if1==1else'alex'#把if条件一改可以组成很简练的逻辑代码


map

遍历序列,对序列中每个元素进行操作,最终获取新的序列。

l=[1,2,3,4]


ll=list(map(lambdax:x+1,l))#用list把map对象转换为list对象

#区别filterfilter是对列表筛选map是加工处理


#进阶用法

list1=[1,2,3,4]

list2=[5,6,7,8]

b=list(map(lambdax,y:x+y,list1,list2))

print(b)对两个列表的元素一一对应相加

#[6,8,10,12]


reduce

reduce是对可迭代对象进行累计操作

fromfunctoolsimportreduce


l=list(iforiinrange(10))


result=reduce(lambdax,y:x+y,l)

print(l,result)


list

aTuple=(123,'xyz','zara','abc');

aList=list(aTuple)#将元组转换为列表


#或者:

list(iforiinrange(10))


random

importrandom

print(random.random())#0到1取随机浮点数


print(random.randint(2,20))#2到20取随机整数


print(random.uniform(10,20))#10到20取随机浮点数


print(random.choice('test'))#'test'取随机字母


print(random.choice([1,2,3,4]))#列表取随机元素


print(random.randrange(1,100,2))#1到99步长为2取随机数

print(random.randrange(1,100))#1到99取随机整数


a=list(iforiinrange(10))


random.shuffle(a)#把a中元素打乱


print(a)


list的extendor+

l=[]

l.extend([1,1])#list追加多个元素


ll=[1]

test=ll+[0]

print(test)

test=test+[0,1,2,3]#直接列表追加多个元素

print(test)


输出杨辉三角第n行

deftest(n):

dd={}

ifn==1:

dd[1]=[1]

elifn==2:

dd[2]=[1,1]

dd[1]=[1]

ifn>=3:

dd[n]=[1foriinrange(n)]

foriinrange(n):

ifi==0ori==n-1:

continue

else:

dd[n][i]=test(n-1)[n-1][i-1]+test(n-1)[n-1][i]

#不能用test(n)[n][i]报错RecursionError:maximumrecursiondepthexceededin    comparison    

returndd


print(test(5))


###############网上大神级的例子,用错位相加方法

defgenerate(numRows):

r=[[1]]

foriinrange(1,numRows):

r.append(list(map(lambdax,y:x+y,[0]+r[-1],r[-1]+[0])))

returnr[:numRows]

a=generate(10)

foriina:

print(i)



find字符串查找

s1='aabbxuebixuebi'

s2='ab'

s3='xue'

print(s1.find(s2))

print(s1.find(s3))#计数s3前面有多少个字符

#返回14


list中最大最小值

li=[3,2,5,7,8,1,5]


li[-1],li[li.index(min(li))]=li[li.index(min(li))],li[-1]


m=li[0]

ind=li.index(max(li))

li[0]=li[ind]

li[ind]=m


print(li)


旋转数列

fromcollectionsimport*

li=[1,2,3,4,5,6,7,8,9]

deq=deque(li,maxlen=len(li))

print(li)

deq.rotate(int(input('rotate:')))

print(list(deq))


ifnot

deftest(var):

ifnotvar:

print('111')

else:

print("222")


test('')#结果是111


deftest2(var):

ifvar:

print('333')

else:

print('444')


test2('23213')#结果是333

#在python判断语句中None,False,空字符串"",0,空列表[],空字典{},空元组()都相当于False


#notNone==notFalse==not''==not0==not[]==not{}==not()


猴子分桃子

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?


i=1#核心是如何找出有限循环的条件

n=0

flag=False

whileTrue:

n=4*i

forjinrange(1,6):

ifn%4!=0:

break

else:

n=n*5/4+1

ifj==5:

flag=True

ifflag:

break

i+=1


print(n)


forkinrange(1,6):#校验是否准确

n=(n-1)*4/5

print(n)



join字符串拼接

join将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串

delimiter=','

mylist=['Brazil','Russia','India','China']

print(delimiter.join(mylist))

print(''.join(mylist))


随机奇数判断能被多少位9整除

题目输入一个奇数,然后判断最少几个9除于该数的结果为整数。

如999999/13=76923

deftest(n):

i=0

whileTrue:

sum=0

forjinrange(i+1):

sum+=9*10**j

ifsum%n!=0:

i+=1

else:

break

print(sum)

print(len(str(sum)))


test(17)


打印多个相同字符串

读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

print("test"*3)#结果是:testtesttest

importrandom

foriinrange(6):

a=random.randint(1,50)

print('*'*a+str(a))


解码

题目某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

deftest(n):

nn=str(n)

a=[]

foriinnn:

temp=(int(i)+5)

a.append(temp)

print(a)

a[0],a[3]=a[3],a[0]#可不用使用中间变量,牢记此用法

a[1],a[2]=a[2],a[1]

print(a)


test(1234)



列表的拓展用法

挪用别人的材料

#list

#新建列表

testList=[10086,'中国移动',[1,2,4,5]]


#弹出z指定位置元素

print(testList.pop(0))

print(len(testList))

print(testList)


matrix=[[1,2,3],

[4,5,6],

[7,8,9]]

print(matrix)

col2=[row[1]forrowinmatrix]#getacolumnfromamatrix

print(col2)

col2even=[row[1]forrowinmatrixifrow[1]%2==0]#filterodditem

print(col2even)


time模块用法

importtime

start=time.time()

foriinrange(3000):

print(1,end="")


end=time.time()

print(end-start)#测运行时间



#cttime用法

print(time.ctime(time.time()))#源码中注释:ConvertatimeinsecondssincetheEpochtoastringinlocaltime.



分析子串在母字符串出现次数

s1='xuebixuebixuebixuebixuebixuebixuebixue'

s2='xuebi'

print(s1.count(s2))


磁盘写入

从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个#为止。


#fp=open('c:\copy.txt','w')先试试怎么用

#fp.write('testing')

#fp.close()


fp=open('c:/copy.txt','w')#注意open放在循环外面才能连续写入

whileTrue:

i=input("inputyourwords:")

ifi!='#':

fp.write(i)

print("写入成功")

else:

break

fp.close()

print('写入完成')


列表转字典拉链函数zip用法

i=['a','b']

l=[1,2]

print(dict(zip(i,l)))



相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,&#39;\n&#39;是换行,&#39;\t&#39;是tab,&#39;\\&#39;是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open(&#39;3_2.txt&#39;,&#39;r&#39;)linecount=len(file.readlines())linecache.getline(&#39;3_2.txt&#39;,linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问