pycharm

python基础

一.数据类型知识点(type查看)

1.万物皆可转字符串(加""即可),但字符串不一定能转成数字等。

2.字符串可以用单引号,双引号,三引号(与多行注释写法相同,但需要变量接收)。

3.若想在字符串内包含单、双或三引号,则可以用转义字符\解除引号的效用。

a = "\"hello world\""

4.字符串的拼接使用“+”即可(不可用于和非字符串的拼接)。

a = "\"hello world\""
b = "I'm li hua"
print(a+b)

5.数字和字符串的拼接。

a = "\"hello world\""
b = 10086
print("%s%s"%(a,b))

 6.“m.n”控制数据的宽度和精度(宽度小于数字自身,不生效;n控制小数点精度,四舍五入)。

b = 10086.878
print("%2.2f"%(b))

7.字符串格式化(format 格式化,缺点是不能控制精度)。

b = "十一"
print(f"我最喜欢的数字是{b}")

 8.若数字开头为0,则不可直接定义,应用字符串定义。

 9.无论键盘输入什么数据,获取到的数据永远都是字符串类型。

二.语句

1.input()输入,括号内可以直接输入提示语句。

2.多条件判断:if,elif,else.条件之间是互斥的,如果执行if,elif是不会执行的。

3.输出后不换行

b = "十一"
print("我最喜欢的数字是",end='')
print(b)

4."\t"制表符,效果相当于tab建,使多行字符串进行对齐。

print("hello\tworld")

 5.print( )相当于输出一个换行。

6.range()前闭后开,默认步长为1。

7.continue中断之后的语句(临时中断,不执行continue之后的语句,只影响本层)

   break直接结束本层所有循环(永久中断)。

三.运算符优先级

单目运算符、算术运算符、左移右移、关系运算符、按位与,异或、按位或、逻辑运算符、条件运算符、赋值( 从高到低“单算移关与,异或逻条赋”)。

四.函数

  1.格式:def 函数名(传入参数):

                函数体

                return 返回值

定义完函数后必须调用(调用方法:函数名()),参数不需要可以省,返回值不需要可以省。

如果一个函数有多个返回值,则需要多个变量接收。

def add(a,b):
        result = a + b
        return result
r = add(7,8)
print(r)

2.函数体内定义的变量为局部变量,若要修改为全局变量用global定义即可。

五.列表

1.用[ ]表示,元素类型可不同,支持嵌套

2.功能

 3.遍历,迭代:依次取出元素(while 或for均可)。

六.元组

1.tuple,用( )表示,不可修改(但是如果元组里嵌套了一个list,list的内容是可以修改的),逗号隔开,支持嵌套。

2.只有一个数据时,这个数据后面要加逗号,不写的话就不是元组类型了。

3.功能

七.字符串

1.字符串也是一种数据容器,不支持修改,空格也算一个元素。 

2.功能

a. 

b.

c.

 

d.

e.

八.集合

1.set, 允许修改,不支持重复元素且内容无序,使用{ },逗号隔开,不支持下标索引。

2.功能

补充: 

a = {1,2,3,4,5,6,7}
b = {2,4,6,8}
c = {6,7,8,9,10}
#取出2个集合的差集(a有而b没有的),得到一个新集合,a和b不变
print(a.difference(b))
#消除差集(在a中删除和b相同的元素),a被修改,不变
a.difference_update(b)
print(a)
#集合合并(得到新集合,b与c不变)
print(b.union(c))

3.集合不支持下标索引,不能用while循环,可以用for。 

九.字典

1.dict,以键值对储存,不允许key重复,若key重复则后面的值将前面的覆盖,支持嵌套(从嵌套字典中取出信息: 字典[ ][ ])。

2.不可以使用下标索引,通过key值来取得对应的value。eg.print(dict[key]).

3.字典的key和value可以是任意数据类型(key不可以是字典)。

4.功能

5.字典转成列表,元组,集合时,value会丢失, 但是转换成字符串没问题。

机器学习

matplotlib

折线图

import random
from matplotlib import pyplot as plt
#往下三行代码的作用是使中文可以显示
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
x = range(0,120)
#一个图中显示两根折线
y_1 = [random.randint(17,25) for i in range(120)]
y_2 = [random.randint(15,22) for j in range(120)]
plt.figure(figsize = (10,8))
#明确两个折线发表代表什么,设置颜色,线条格式(:表示虚线),线条粗细
plt.plot(x,y_1,label="长春",color="orange",linestyle=':',linewidth=5)
plt.plot(x,y_2,label="苏州",color="cyan",linestyle='-.')
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#rotation是旋转角度,将x强制转换为列表,每3个取一个
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45)
#直接下面这样也可以
#plt.yticks(y)
#设置y轴的刻度
plt.yticks(range(15,26))
plt.xlabel("时间")
plt.ylabel("温度 单位(℃)")
plt.title("气温变化情况")
#绘制网格,设置透明度alpha(范围是0到1),设置网格的线条
plt.grid(alpha=0.4,linestyle=':',linewidth=1)
#添加图例,loc设置图例的位置
plt.legend(loc="lower left")
plt.show()

散点图

与折线图的唯一区别是plt.scatter()

#散点图
from matplotlib import pyplot as plt
import random
#往下三行代码的作用是使中文可以显示
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
y_3 = [random.randint(10,12) for i in range(31)]
y_10 = [random.randint(25,27) for j in range(31)]
x_3 = range(1,32)
x_10 = range(41,72)
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
#绘制散点图(与折线图的唯一区别)
plt.scatter(x_3,y_3,label="3月份")
plt.scatter(x_10,y_10,label="10月份")
#调整x轴刻度
_x = list(x_3)+list(x_10)
_xtick_labels = ["3月{}日".format(i) for i in x_3]
_xtick_labels +=["10月{}日".format(i-40) for i in x_10]
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45)
#添加图例
plt.legend(loc="upper left")
#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("变化")
#展示
plt.show()

条形图 

竖着

from matplotlib import pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
#当字符串过长时可以通过\n换行
a = ["战狼2", "速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5\n∶最后的骑士","摔跤吧!爸爸","加勒比海盗"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8]
#设置图片大小
plt.figure(figsize=(20,8),dpi=80)
#绘制条形图,调整条形宽度
plt.bar(range(len(a)),b,width=0.3)
#设置字符串到x轴
plt.xticks(range(len(a)),a)
plt.show()

横着

from matplotlib import pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
a = ["战狼2", "速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5∶最后的骑士","摔跤吧!爸爸","加勒比海盗"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8]
#设置图片大小
plt.figure(figsize=(20,8),dpi=80)
#绘制条形图,调整条形宽度
plt.barh(range(len(a)),b,height=0.3)
#设置字符串到y轴
plt.yticks(range(len(a)),a)
plt.show()

其他

1. 设置画板多图:matplotlib.pyplot.add_subplot(nrows,ncols,**fig_kw) 

           nrows:第几行;  ncols:第几列;   **fig_kw:代表第几个图

2.颜色

3.直方图:plt.hist(x,bins=None)

           x:需要传递的数据;        bins:组距

4.饼图

plt.pie(x,explode=None,labels=None,autopct=None,pctdistance=0.6,shadow=False,
labeldistance=1.1,startangle=None,radius=None,counterclock=True,wedgeprops=None,
textprops=None,center=(0,0),frame=False,rotatelabels=False,data=None)

        x:表示扇形或锲形的数据

        explode:表示扇形或锲形离开圆心的距离

        labels:表示扇形或锲形对应的标签文本

        autopct:表示控制扇形或锲形的数值显示的字符串,可通过格式字符串指定小数点后的位数.         pctdistance:表示扇形或锲形对应的数值标签距离圆心的比例,默认为0.6

        shadow:表示是否显示阴影

        labeldistance:表示标签文本的绘制位置(相对于半径的比例),默认为1.1.

        startangle:表示起始绘制角度,默认从x轴的正方向逆时针绘制

        radius:表示扇形或锲形的半径.

        wedgeprops:表示控制扇形或锲形属性的字典.例如:通过wedgeprops={’‘width’:0.7}将锲形的宽度设为0.7.

        textprops:表示控制图表中文本属性的字典

        center:表示图表中心点位置,默认为(0,0) frame:表示是否显示图框

import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
labels = ['大型','中型','小型', '微型']
#每块值
sizes = [46, 253, 321, 66]
colors = ['red','yellowgreen','lightskyblue','yellow']
#将某一块分割出来,值越大分割出的间隙越大
explode = (0, 0, 0.02, 0)
patches,text1,text2 = plt.pie(sizes,explode=explode,labels=labels,colors=colors,labeldistance = 1.2,
                      autopct='%3.2f%%',shadow=False,startangle=90,pctdistance=0.6)
# x,y轴刻度设置一致,保证饼图为圆形
plt.axis('equal')
plt.legend()
plt.show()

numpy 

1.基础知识

import numpy as np
import random
#创建数组
t1 = np.array([1,2,3])
print(t1)
t2 = np.array(range(10))
print(t2)
t3 = np.arange(10)
print(t3)
#查看数据类型
print(t3.dtype)
#设置数据类型
t4 = np.arange(5,dtype=float)
print(t4)
print(t4.dtype)
#类型转换
t5 = t4.astype("int")
print(t5)
print(t5.dtype)
#保留小数,四舍五入
t6 = np.array([random.random() for i in range(10)])
print(t6)
print(t6.dtype)
t7 = np.round(t6,2)
print(t7)
#查看形状,shape里面有几个数就代表几维
print(t6.shape)
#修改形状,但对本身不会修改,如果想对本身修改,则t5=t5.reshape()即可
print(t6.reshape(2,5))
t8 = np.arange(24).reshape(2,3,4)
print(t8)
#转一维,shape[0]表示行数,shape[1]表示列数;或者直接用flatten展开
t9 = t8.reshape(t8.shape[0]*t8.shape[1]*t8.shape[2],)
print(t9)
print(t8.flatten())
#数组的计算(广播原则)
#      与常数运算,每个元素都加2,乘除同理
#      与数组运算,对应元素相加减乘除,如果只有行(列)的维数对应,则每一行(列)都进行对应的运算
#      在某个方向上形状一样,则可以进行计算,在每一个方向上形状都一样,则不可以计算
print(t8+2)
t10 = [0,1,2,3]
print(t8-t10)
#数组的转置
t11 = np.arange(24).reshape(4,6)
print(t11.transpose())
print(t11.T)
print(t11.swapaxes(1,0))
#轴(axis)(用0,1,2表示)
#读取数据
# np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
# frame文件(字符串,或产生器);dtype数据类型(默认np.float);delimiter分隔字符串(默认为空格)
# skiprows跳过前x行(一般跳过第一行表头),usecols读取指定的列,索引,元组类型;unpack转置

2.统计指标

axis轴的取值并不一定,Numpy中不同的API轴的值都不一样 

                    方法                              作用
np.min(ndarray,axis) 查询所有行或所有列的最小值
np.max(ndarray,axis)查询所有行或所有列的最大值
np.median(ndarray,axis)查询所有行或所有列的中位数
np.mean(ndarray,axis)查询所有行或所有列的平均值
np.std(ndarray,axis,dtype)查询所有行或所有列的标准差
np.var(ndarray,axis,dtype)查询所有行或所有列的方差
np.ardmax(ndarray)查询最大值的位置
np.ardmin(ndarray)查询最小值的位置

3.正态分布

    a.   np.random.randn

                 功能:从标准正态分布中返回一个或多个样本值

    b.   np.random.normal(loc = 0.0,scale = 1.0,size = None)

                loc:float 此概率分布的均值(对应整个分布的中心)

                scale:float 此概率分布的标准差(对应于分布的宽度,scale值越大越矮胖,scale值越小越瘦高)

                size:int or tuple of ints 输出的shape,默认为None,只输出一个值

    c.    np.random.standard_normal(size = None)

                返回指定形状的标准正态分布的数组

pandas

1.数据结构

                        数据结构                                                描述
Series一维数据结构
DataFrame二维数据结构
MultiIndex三维数据结构
Panel三维数据结构(MultiIndex老版本)

 2.DataFrame

        a.    pd.DataFrame(data = None,index = None,columns = None)

                      index:行标签,如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引                            columns:列标签,如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引  

        b.

属性作用
dataframe.shape获取维度
dataframe.index获取行索引表
dataframe.columns获取列索引表
dataframe.values获取其中array的值
dataframe.T行列互换(转置)
dataframe.head()默认获取前5行,其他行数自行添加
dataframe.tail()默认获取后5行,其他行数自行添加
dataframe.info获取每一列的非空元素个数

3.画图

        a.图行种类(与matplotlib类似)

种类描述
line折线图
bar条形图(竖直条状)
bath条形图(水平条状)
hist直方图
pie饼图
scatter散点图

        b.举例

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
a = ['a','b','c','d']
b = ['a1','b1','c1','d1']
c = pd.DataFrame(np.random.randint(0,100,(len(a),len(b))),index = a,columns = b)
plt.figure(figsize = (20,8),dpi = 100)
c.plot(kind='bar',stacked=True)
plt.show()

4.文件读取和储存

数据类型读取文件存储文件
textCSVread_csvto_csv
textJSONread_jsonto_json
textHTMLread_htmlto_json
textLocal clipboardread_clipboardto_clipboard
binaryMS Excelread_excelto_excel
binaryHDF5 Formatread_hdfto_hdf
binaryFeather Formatread_featherto_feather
binaryParquet Formatread_parquetto_parquet
binaryMsgpackread_msgpackto_msgpack
binaryStataread_statato_stata
binarySASread_sas--
binaryPython Pickle Formatread_pickleto_pickle
SQLSQLread_sqlto_sql
SQLGoogle Big Queryread_gbpto_gbp

         a.      pd.read_csv(filepath_or_buffer,sep = ',',usecols = None)

                        filepath_or_buffer:文件路径

                        sep:分隔符,默认用','隔开

                        usecols:指定读取的列名,列表形式

         b.       dataframe.to_csv(path_or_buffer=None,sep = ',',columns = None,header =                    True,index = True,mode = 'w',encoding = None)

                    path_or_buf:文件路径

                    sep:分隔符,默认用','隔开

                    columns:选择需要的列索引

                    header:是否写进列索引值

                    index:是否写进行索引值

                    mode:'w':重写,'a':追加

5.缺失值处理

        a.判断是否含MAN

                        方法                        描述
pd.isnull(dataframe) 或dataframe.isnull()有缺失值返回True,没有缺失值返回False
pd.notnull(dataframe)或dataframe.isnull()没有缺失值返回True,有缺失值返回False

        b.删除存在缺失值的对象:dataframe.dropna(axis = 0) 

                        axis=1删除所在列,不会修改原数据,需要接收返回值

        c.替换缺失值:dataframe.fillna(value, inplace = True)

                        True则会修改原数据,False则不替换修改原数据,生成新的对象

        d.缺失值未被MAN标记:dataframe.replace(to_replace = '?',value = np.nan)

                        用其他标记(比如’?‘)替换为NAN,再使用上面的方法处理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值