python知识点综合

文章目录

一、软件安装

1、python的安装

(1)网址:https:www.python.org
(2)环境变量配置:
① 在安装过程中记得勾选“Add Python 3.7 to PATH”复选框
② 或者安装完成后,在windows进行环境变量配置,方法为:打开计算机属性,选择高级系统配置,在点击环境变量,添加python的安装路径到系统变量的path中
(3)测试安装是否成功:win+R,打开cmd,输入“python”命令,如果出现如下提示,就说明安装成功了。
在这里插入图片描述

2、Jupyter notebook的安装(python的一种编辑器)

方法一:

(1)首先先安装anaconda
(2)打开anaconda,安装jupyter notebook
(3)打开界面,会发现界面是一个默认的目录,如果想把自己写的程序文件保存在自己新建的文件夹中,可执行以下步骤:
① 找到配置文件位置:在开始菜单中找到并打开Anaconda Prompt,输入"jupyter notebook --generate-config
② 打开上一步生成的配置文件:C:\Users\USER.jupyter\jupyter_notebook_config.py
③ 在jupyter_notebook_config.py中找到并修改如下配置项:
修改前: #c.NotebookApp.notebook_dir = ‘’
删除#,在后面的单引号里输入要设置的路径,如下,保存。
在这里插入图片描述
④ 在win开始菜单中找到jupyter notebook快捷图标,鼠标右键>>属性>>快捷方式>>目标,删除最后的“%USERPROFILE%/”

方法二:

① 打开电脑搜索框,输入“CMD”
② 找到你的“任意”项目存储位置 D:\python learning\jupyter notebook
③ 在“CMD”,输入“jupyter notebook D:\python learning\jupyter notebook”,并按下“enter”键

二、str.format()格式化字符串函数

基本语法是通过{}和:来代替以前的%

1.以前的%

print(%s is a %s years old boy”% (user,age))
print(“my value is : %+08.3f% my value)

其中
-:指定左对齐
+:表示数值总要带符号(正数带“+”,负数带“-”)
0:表示不补充空格,而是0

2.现在用的比较多的格式化字符串

{}{}.format(“hello”,“world”){0}{1}.format(“hello”,“world”)

可以设置参数:

print("网站名:{name},地址{url}".format(name="菜鸟教程",url="www.runoob.com")

数字格式化:

print("reversed({:d})={:d}".format(m,s))

填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
在这里插入图片描述

三、循环中的break、continue、else

1、 break语句终止当前循环、转而执行循环之后的语句

sum1=0
i=1
while i<=5:
    sum1+=i
    if i==3:
        break
    print('i={},sum={}'.format(i,sum1))
    i+=1

2、 else:如果循环代码从break处终止,跳出循环;正常结束循环,则执行else中代码

#找出2~100之间的素数
from math import sqrt
for i in range(2,101):
    j=int(sqrt(i))
    for j in range(2,j+1):
        if i%j==0:
            break
    else:
        print(i,end=' ')

3、 continue:停止当前循环,重新进入循环

sum1=0
i=1
while i<=5:
    sum1+=i
    i+=1
    if i==3:
        continue
    print('i={},sum={}'.format(i,sum1))
    

四、异常处理

1、else:没发生异常的情况下执行的语句

alist=[1,2,3,4]
i=0
while True:
    try:
        print(alist[i])
    except IndexError:
        print('Index error')
        break
    else:
        i+=1
输出结果为:
1
2
3
4
Index error

2.finally:不管发没发生异常都执行的语句

def finallyTest():
    try:
        x=int(input('enter the first number: '))
        y=int(input('enter the second number: '))
        print(x/y)
        return 1
    except Exception as err:
        print(err)
        return 0
    finally:
        print('it is a finally clause')
print(finallyTest())
输出结果:
enter the first number: 3
enter the second number: a
invalid literal for int() with base 10: 'a'
it is a finally clause
0

五、文件读取

1、open()函数

在这里插入图片描述
rb wb ab rb+ wb+ rb+ 后面加“b”就表示二进制文件的读写添加

2、with语句读取文件

with open('text.txt','w') as f:
    f.write('GOOGLE Inc.\Microsoft Corporation\nApple Inc\nFacebook.Inc')  #write只能写入字符串
with open('text.txt','r') as f:
    text=f.read()
    print(text)
    print(type(text))
输出结果为:
GOOGLE Inc.\Microsoft Corporation
Apple Inc
Facebook.Inc
<class 'str'>
with open('text.txt','r') as f:
    text=f.readlines()
    print(text)
    print(type(text))
输出结果:
['GOOGLE Inc.\\Microsoft Corporation\n', 'Apple Inc\n', 'Facebook.Inc']
<class 'list'>
#将文件text.txt的字符串前加上序号1,2,3...后写到另一个文件companies.txt中
with open('text.txt','r') as f:
    text=f.readlines()
    listtemp=[]
    for i in range(len(text)):
        listtemp.append(str(i+1)+' '+text[i])
with open('companies.txt','w') as f1:
    f1.writelines(listtemp)  #writelines可以写入列表

file.obj.seek(offset,whence=0)
-在文件中移动文件指针,从whence(0表示文件头部,1表示当前位置,2表示文件尾部)
偏移offset个字节
-whence参数可选,默认值为0

s='Tencent Technology Company limited'
with open('companies.txt','a+') as f:
    f.writelines('\n')
    f.writelines(s)
    f.seek(0)  #回到文件头部,否则我们后面读取不到任何东西
    cNames=f.readlines()
print(cNames)
with open('poem.txt','w') as f:
    f.write('沧海月明珠有泪\n蓝田日暖玉生烟')
with open('poem.txt','r') as f:
    for line in f:    #遍历文件的每一行
        print(line,end='')

六、序列类型常用的内建函数

len()、max()、min()、sum()、enumerate()、sorted()、zip()、reversed()

a='Hello,World'
print(len(a))
b=sorted(a)
print(b)
print(a)
c=reversed(a)
for i in c:
    print(i,end=' ')

d=enumerate(a)   #产生索引和元素组成的元组迭代器
for i in d:
    print(i,end=' ')
    
e=zip(a)
for i in e:
    print(i,end=' ')
输出结果为:
11
[',', 'H', 'W', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r']
Hello,World
d l r o W , o l l e H (0, 'H') (1, 'e') (2, 'l') (3, 'l') (4, 'o') (5, ',') (6, 'W') (7, 'o') (8, 'r') (9, 'l') (10, 'd') ('H',) ('e',) ('l',) ('l',) ('o',) (',',) ('W',) ('o',) ('r',) ('l',) ('d',) 

七、列表方法

在这里插入图片描述
在这里插入图片描述

八、字典

1、字典创建

在这里插入图片描述
在这里插入图片描述

2、字典方法

在这里插入图片描述
输出结果为:
在这里插入图片描述
3、可变长关键字参数
在这里插入图片描述

九、集合

集合:一个无序不重复的元素的组合【set(可变集合)、fronzenset(不可变集合)】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十、数据结构

1、ndarray介绍

(1)维度(dimension)成为轴(axes),轴的个数成为秩(rank)

在这里插入图片描述

(2)基本属性

在这里插入图片描述

(3)ndarray的创建

在这里插入图片描述

(4)ndarray的操作

在这里插入图片描述
在这里插入图片描述

(5)ndarray的运算

在这里插入图片描述
在这里插入图片描述

(6)ndarray的专门应用-线性代数

在这里插入图片描述
在这里插入图片描述

(7)ndarray的ufunc函数

在这里插入图片描述

2、Series介绍

(1)Series创建

在这里插入图片描述

(2)Series基本运算

在这里插入图片描述

(3)数据对齐

在这里插入图片描述

(4)Series的name属性

在这里插入图片描述

3、DataFrame介绍

(1)DataFrame的创建

在这里插入图片描述
在这里插入图片描述

(2)DataFrame的修改操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)DataFrame的统计功能

在这里插入图片描述

(3)DataFrame的数据选择

在这里插入图片描述

十一、Pandas创建时间序列

在这里插入图片描述
在这里插入图片描述

十二、简单统计和筛选(Tushare:免费财经数据接口)

Tushare网址
http://tushare.org/index.html
在这里插入图片描述
在这里插入图片描述

十三、Merge

1、Append加行到DataFrame

在这里插入图片描述

2、Concat-连接pandas对象

在这里插入图片描述在这里插入图片描述

3、Join-SQL类型的连接

在这里插入图片描述

十四、聚类分析

1、用scipy解决

在这里插入图片描述
在这里插入图片描述

2、用scikit learn解决(sklearn)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十五、matplotlib

在这里插入图片描述

1、爬取可口可乐公司近一年来股票收盘价的月平均值,并绘制成散点图

import requests
import re
import json
import pandas as pd
from datetime import date
import matplotlib.pyplot as plt
def create_df(stock_code):
    url="https://finance.yahoo.com/quote/%s/history?p=%s"%(stock_code,stock_code)
    try:
        r=requests.get(url)
    except Exception as err:
        print(err)
    m=re.findall('"HistoricalPriceStore":{"prices":(.*?),"isPending"',r.text)
    if m:
        quotes=json.loads(m[0])  #json.load()函数是将字符串转化成字典
        quotes=quotes[::-1]  #将quotes倒序
        ori_quotes_list=[item for item in quotes if 'type' not in item]

    list1=[]
    for i in range(len(ori_quotes_list)):
        x=date.fromtimestamp(quotes[i]['date'])  #将date时间戳转换成常规时间
        y=date.strftime(x,'%Y-%m-%d')  #转换成固定格式
        list1.append(y)
    quotesdf_m=pd.DataFrame(ori_quotes_list,index=list1)
    quotesdf=quotesdf_m.drop(['date','adjclose'],axis=1)
    return quotesdf
quotesdfKO=create_df('KO')
plt.rcParams['font.sans-serif']=['SimHei']   #将字体改成黑体
quotesdfKO['month']=quotesdfKO.index.astype('datetime64[M]') #将索引改成类型datetime64[M]
closeMeansKO=quotesdfKO.groupby('month').close.mean()
x_data=closeMeansKO.index
y_data=closeMeansKO.values
plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--',label='KO')
plt.title('可口可乐公司近一年来股票收盘价的月平均值')
for i,j in zip(x_data,y_data):
    plt.text(i,j+0.2,'{:.0f}'.format(j))
plt.xlabel('日期')
plt.ylabel('收盘价平均值')
plt.legend(loc='best')  #增加图例
plt.savefig('C:\webshop_data\KOclosemeans.jpg',dpi=400,bbox_inches='tight')

结果为:
在这里插入图片描述

2、将可口可乐和IBM公司近一年来股票收盘价的月平均值绘制在一张图上

import pylab as pl
quotesdfKO=create_df('KO')
quotesdfIBM=create_df('IBM')
quotesdfKO['month']=quotesdfKO.index.astype('datetime64[M]')
quotesdfIBM['month']=quotesdfIBM.index.astype('datetime64[M]')
closeMeansKO=quotesdfKO.groupby('month').close.mean()
closeMeansIBM=quotesdfIBM.groupby('month').close.mean()
x1_data=closeMeansKO.index
y1_data=closeMeansKO.values
x2_data=closeMeansIBM.index
y2_data=closeMeansIBM.values
pl.plot(x1_data,y1_data,color='red',linewidth=2.0,linestyle='--',label='KO')
pl.plot(x2_data,y2_data,color='blue',linewidth=2.0,linestyle='-',label='IBM')
pl.title('可口可乐和IBM公司近一年来股票收盘价的月平均值')
pl.xlabel('日期')
pl.ylabel('收盘价平均值')
pl.legend(loc='best')
pl.savefig('C:\webshop_data\closemeans.jpg',dpi=400,bbox_inches='tight')

输出结果为:
在这里插入图片描述

十六、pandas画图

1、用柱状图比较可口可乐和IBM这两家公司近一年来股票成交量

import pandas as pd
KO_volumes=quotesdfKO.groupby('month').volume.sum()
IBM_volumes=quotesdfIBM.groupby('month').volume.sum()
volumedf=pd.DataFrame()
volumedf['KO']=KO_volumes
volumedf['IBM']=IBM_volumes
volumedf.index=volumedf.index.astype('str')    #将index改成str类型输出
volumedf.plot(kind='bar')

输出结果为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、展示可口可乐公司今年最近三个月每个月股票收盘价的占比

df=quotesdfKO[(quotesdfKO.month>='2020-03-01') & (quotesdfKO.month<='2020-05-01')].groupby('month').close.mean()
df.index=df.index.astype('str')
df.plot.pie(labels=[3,4,5],colors=['c','r','g'],subplots=True,autopct='%.2f',figsize=(6,6))

输出结果为:
在这里插入图片描述

十七、数据存取

1.存入单个表到一个工作簿中

在这里插入图片描述
在这里插入图片描述

2.存入多个表到一个工作簿中

使用ExcelWriter()可以向同一个excel的不同sheet中写入对应的表格数据
1、首先需要创建一个writer对象,传入的主要参数为已存在容器表格的路径及文件名称

writer=pd.ExcelWriter(r'C:\webshop_data\地区金额(分配完成).xlsx')

2、基于已创建的writer对象,可以利用to_excel()方法将不同的数据框及其对应的sheet名称写入该writer对象中
df.to_excel(writer,sheet_name='源数据',index=False)
df2.to_excel(writer,sheet_name="深圳地区",index=False)
df1.to_excel(writer,sheet_name="非深圳地区",index=False)

3、在全部表格写入完成之后,使用save()方法来执行writer中内容向对应实体excel文件写入数据的过程:

writer.save()

import pandas as pd
df=pd.read_excel(r'C:\webshop_data\地区金额.xlsx',sheet_name='Sheet1')
df1=df[df['地区']!='深圳']
df2=df[df['地区']=='深圳']

writer=pd.ExcelWriter(r'C:\webshop_data\地区金额(分配完成).xlsx')
print(writer.path)
df.to_excel(writer,sheet_name='源数据',index=False)
df2.to_excel(writer,sheet_name="深圳地区",index=False)
df1.to_excel(writer,sheet_name="非深圳地区",index=False)
writer.save()

十八、数据分析小案例

1、男女电影评分差异比较,基于数据集中男性女性对电影的评分来判断男性还是女性对电影的评分差异性更大

import pandas as pd
unames=['user id','age','gender','occupation','zip code']
user=pd.read_table(r'C:\Users\USER\Desktop\python慕课课程文件\python入门\ml-100k\u.user',sep='\|',names=unames,engine='python')
rnames=['user id','item id','rating','timestamp']
ratings=pd.read_table(r'C:\Users\USER\Desktop\python慕课课程文件\python入门\ml-100k\u.data',sep='\t',names=rnames,engine='python')
#选择需要的数据列,提高效率
users_df=user.loc[:,['user id','gender']]
ratings_df=ratings.loc[:,['user id','rating']]
rating_df=pd.merge(users_df,ratings_df,on='user id')
gender_table=pd.pivot_table(rating_df,index=['gender','user id'],values='rating')
Female_df=gender_table.query('gender=="F"')
Male_df=gender_table.query('gender=="M"')
Female_std=np.std(Female_df)
Male_std=np.std(Male_df)
print('gender','\nF\t%.6f'%Female_std,'\nM\t%.6f'%Male_std)

#输出结果为:
gender 
F	0.480358 
M	0.429755

2、基于男生和女评分均值统计男女各自最喜爱的10部电影

iname=['movie/item id','movie title','release data','video release date',
       'IMDb URL','unknown','Action','Adventure','Animation','Children\'s',
      'Comedy','Crime','Documentary','Drama','Fantasy','Film-Noir','Horror',
       'Musical','Mystery','Romance','Sci-Fi','Thriller','War','Western']
movie_info=pd.read_table(r'C:\Users\USER\Desktop\python慕课课程文件\python入门\ml-100k\u.item',sep='\|',names=iname,engine='python')
movie_df=movie_info.loc[:,['movie/item id','movie title']]
movie_df.columns=['item id','movie title']
ratings_df['item id']=ratings['item id']
merge_ori=pd.merge(ratings_df,users_df)
merge_df=pd.merge(merge_ori,movie_df)
merge_table=pd.pivot_table(merge_df,index=['gender','movie title'],values='rating')
Female_df=merge_table.query('gender=="F"')
Male_df=merge_table.query('gender=="M"')
Female_df.sort_values(by='rating',ascending=False,inplace=True)
Male_df.sort_values(by='rating',ascending=False,inplace=True)
print(Female_df[:10])
print(Male_df[:10])

输出结果为:
                                              rating
gender movie title                                   
F      Prefontaine (1997)                         5.0
       Faster Pussycat! Kill! Kill! (1965)        5.0
       Telling Lies in America (1997)             5.0
       Maya Lin: A Strong Clear Vision (1994)     5.0
       Stripes (1981)                             5.0
       Someone Else's America (1995)              5.0
       Foreign Correspondent (1940)               5.0
       Visitors, The (Visiteurs, Les) (1993)      5.0
       Year of the Horse (1997)                   5.0
       Mina Tannenbaum (1994)                     5.0
                                                          rating
gender movie title                                              
M      Great Day in Harlem, A (1994)                         5.0
       Santa with Muscles (1996)                             5.0
       Prefontaine (1997)                                    5.0
       Aiqing wansui (1994)                                  5.0
       Entertaining Angels: The Dorothy Day Story (1996)     5.0
       Quiet Room, The (1996)                                5.0
       Leading Man, The (1996)                               5.0
       Saint of Fort Washington, The (1993)                  5.0
       Star Kid (1997)                                       5.0
       Marlene Dietrich: Shadow and Light (1996)             5.0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值