用python动手学统计学_2python基础

本文介绍了Python的基础知识,包括四则运算、注释、数据类型、比较运算符、变量、函数、类与实例、程序分支和循环。此外,还讲解了如何使用numpy和pandas进行数据分析,涉及数组、数据帧的创建、操作及读取文件。内容覆盖了数据的存储、处理和分析基础,适合初学者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于python 3.9,使用pycharm community实现,本人水平非常菜,开始想要学习知识。
内容基于这本书和一些网上资料如菜鸟网站等进行补充

2-3python编程基础

2-3-1四则运算

#2-3python编程基础
# 加法+
print(1 + 1)#2
#减法 -
print(5 - 2)#3
#乘法使用星号*
print(2 * 3)#6
#乘方使用两个星号**
print(2 ** 3)#8
#除法使用单斜杠/,但是会出现小数点
print(6 / 3)#2.0
#使用//舍弃小数点以后的数字
print(7 // 3)#2
#补充 % %就是取余数运算,也就是模运算(mod)
print(7 % 3)#1

2-3-2编写注释

pycharm注释快捷键ctrl+/
行首使用#,为单行注释

#补充 % %就是取余数运算,也就是模运算(mod)

多行注释

# #使用//舍弃小数点以后的数字
# print(7 // 3)#2
# #补充 % %就是取余数运算,也就是模运算(mod)
# print(7 % 3)#1

2-3-3数据类型

字符串类型

字符串或串(String)是由数字、字母、下划线组成的一串字符。
可使用单引号’ '和双引号" "均表示字符串

print(type('A'))#<class 'str'>
print(type("A"))#<class 'str'>

数字类型

int(有符号整型)
print(type(1))#<class 'int'>
float(浮点型)
print(type(2.4))#<class 'float'>
complex(复数)

Python 还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。

print(type(3.14j))#<class 'complex'>

布尔型

用True表示真,False表示假的数据类型叫做布尔型

print(type(True))#<class 'bool'>
print(type(False))#<class 'bool'>

列表list= [ ‘runoob’, 786 , 2.23, ‘john’, 70.2 ]

print(type(list))#<class ‘list’>
print(list)#[‘runoob’, 786, 2.23, ‘john’, 70.2]

tuple = ( ‘runoob’, 786 , 2.23, ‘john’, 70.2 )
print(type(tuple))#<class ‘tuple’>
print(tuple)#(‘runoob’, 786, 2.23, ‘john’, 70.2)
列表用 [ ] 标识,是 python 最通用的复合数据类型。

list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
print(type(list))#<class 'list'>
print(list)#['runoob', 786, 2.23, 'john', 70.2]

元组

元组是另一个数据类型,类似于 List(列表)。
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
print(type(tuple))#<class 'tuple'>
print(tuple)#('runoob', 786, 2.23, 'john', 70.2)

字典

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}
print(type(tinydict))#<class 'dict'>
print(tinydict)#{'name': 'runoob', 'code': 6734, 'dept': 'sales'}

2-3-4比较运算符

比较数值的大小关系,使用比较运算符,比较运算符的结果是布尔型

#大于
print(1>0.89)#True
#小于
print(3<2)#False
#相等包括类型
print(2==2)#True
#不相等
print(2!=3)#True
#大于等于
print(4>=3)#True
#小于等于
print(4<=3)#False

2-3-5变量

变量用于保存数据

x = 2
x = x + 2
print(x)#4

2-3-6函数

函数用于保存计算逻辑。计算逻辑多称为过程。同时函数也被称为方法。

def 函数名(参数):
	过程
x = 2
print((x + 2) * 4)#16
#每次写一遍上式,过于麻烦
def sample_function(data):
    return ((data + 2) * 4)
print(sample_function(x))#16
print(sample_function(3))#(3+2)*4=20
print(sample_function(x) + sample_function(3))#36

2-3-7类与实例

类同时定义了数据结构和运算逻辑
生成类的模板

class 类名:
    #__init__特殊函数,构造函数,用于类的初始化
    def 函数名1(参数):
        函数1的过程
    def 函数名(参数):
        函数2的过程
class Sample_Class:
    #__init__特殊函数,构造函数,用于类的初始化
    def __init__(self,data1,data2):
        self.data1 = data1
        self.data2 = data2
    def method2(self):
        return (self.data1 + self.data2)
sample_instance = Sample_Class(data1 = 2,data2=3)

print(sample_instance.data1)#2
print(sample_instance.data2)#3
print(sample_instance.method2())#5

2-3-8基于if语句的程序分支

如果XX,则执行XX,使用if语句
模板

if 判断条件:
    执行语句……
else:
    执行语句……

举个例子

#条件满足
data = 1
if(data < 2):
    print("数据小于2")#结果:数据小于2
else:
    print("数据不小于2")

#条件不满足
data = 3
if(data < 2):
    print("数据小于2")
else:
    print("数据不小于2")#数据不小于2

当判断条件为多个值时,可以使用以下形式:

if 判断条件1:
    执行语句1……
elif 判断条件2:
    执行语句2……
elif 判断条件3:
    执行语句3……
else:
    执行语句4……
data = 5
if(data >= 10):
    print("数据>=10")
elif(data <= 5):
    print("数据<=5")#数据<=5
else:
    print("数据在[6,9]之间")

2-3-9基于for语句的循环

在反复执行同一计算时,可以使用for循环
其中range()表示范围左闭右开

for i in range(0,3):
    print(i)
#0 1 2

打印3次hello

for i in range(0,3):
    print("hello")
#hello hello hello

2-3-10编写易用程序的窍门

保证所写的程序从上到下依次执行时得到正确结果。
同样的代码不要重复白那些,放在函数或者循环语句。
让别人知道代码在干什么。

2-4认识numpy与pandas

2-4-1导入用于分析功能

导入包,如果没有使用pip install 包名下载
as 后面为别名

import numpy as np
import pandas as pd

2-4-2numpy和pandas

二者都是用于导入数据并对其进行整理和统计的包
numpy主要用于array类来存放数据。矩阵计算功能十分强大
pandas主要使用DataFrame类,这个类专门用于管理数据。

2-4-3列表

把多个数据存放在一起的数据类型叫做列表,列表是标准的数据类型
使用方括号将多个数据括起来,就形成了列表

sample_list = [1,2,3,4,5]
print(sample_list)
#[1, 2, 3, 4, 5]

2-4-4行与列

行是横向的,列是纵向的
有使用row表示行,row表示列

2-4-5数组

一维数组

使用列表生成数组,输入np.array()
同样对数组进行的运算会作用在数组的所有元素上。

sample_array = np.array([1,2,3,4,5])
print(sample_array)#[1 2 3 4 5]
print(sample_array+2)#运算在所有的元素[3 4 5 6 7]
print(sample_array*2)#[ 2  4  6  8 10]

一个数组只能存放相同类型的数据。如果同时存放数值型和字符串性的数据,则所有数据都会被当成字符串处理。

sample_array1 = np.array([1,2,"A"])
print(sample_array1)#出现字符串所有都转变成字符串,['1' '2' 'A']

二维数组

把嵌套了列表的列表作为参数输入即可

sample_array_2 = np.array(
    [[1,2,3,4,5],
    [6,7,8,9,10]])
print(sample_array_2)
# [[ 1  2  3  4  5]
#  [ 6  7  8  9 10]]

获得行数和列数的方法是shape,2行5列

print(sample_array_2.shape)#(2, 5)

2-4-6生成等差数列

等差数列是前后元素之差相等的数列就是等差数列。前后元素只差叫做公差。使用np.arange(start,stop,step)函数
起始位置start,结束位置stop和公差step。生成位置不包含结束位置
同时也可省略start标记

c = np.arange(start=1, stop=6, step=1)
print(c)#[1 2 3 4 5]

2-4-7多种生成数组的方式

np.tile

要生成元素相同的数组,可以使用该np.tile

tile_1 = np.tile("A",5)
print(tile_1)#['A' 'A' 'A' 'A' 'A']
tile_2 = np.tile(0,4)
print(tile_2)#[0 0 0 0]

np.zeros

生成只有0的数组是,使用哈桑农户np.zeros,它的参数是数组的元素的个数

zeros_1 = np.zeros(4)
print(zeros_1)#[0. 0. 0. 0.]
zeros_2 = np.zeros([2,3])
print(zeros_2)
# [[0. 0. 0.]
#  [0. 0. 0.]]

np.ones

可以生成只有1的数组,这个函数的参数也可以是列表

ones_1 = np.ones(3)
print(ones_1)#[1. 1. 1.]

2-4-8切片

使用切片(slice),可以从数组或列表中轻松取出数据

d1_array = np.array([1,2,3,4,5])
print(d1_array)#[1 2 3 4 5]
print(d1_array[0])#1
#[1:3]表示取出缩影为1和2的元素,同样是左开右闭区间
print(d1_array[1:3])#[2 3]

2行以上的数组

d2_array2 = np.array(
     [[1,2,3,4,5],
     [6,7,8,9,10]])
print(d2_array2)
# [[ 1  2  3  4  5]
#  [ 6  7  8  9 10]]
print(d2_array2[0,3])#4
print(d2_array2[1,2:4])#[8 9]

2-4-9数据帧(DataFrame)

数据帧有多种生成方法,我们可以轻松地通过数组或列表生成

sample_df = pd.DataFrame({
    'col1':sample_array,
    'col2':sample_array * 2,
    'col3':["A","B","C","D","E"]
})
print(sample_df)
#    col1  col2 col3
# 0     1     2    A
# 1     2     4    B
# 2     3     6    C
# 3     4     8    D
# 4     5    10    E

2-4-10读取文件中的数据

我们可以自己编写数据帧,也可以从文件中读取数据

存放数据的变量名= pd.read_csv("地址+文件名")

例子

file_data = pd.read_csv("D:/knn_iris.csv")
print(file_data)
# id  pred
# 0    1     1
# 1    2     1
# 2    3     1
# 3    4     1
# 4    5     1
# 5    6     0
# 6    7     0

2-4-11读取文件中的数据(pd.contact)

把数据帧连接在一起,可以生成新的数据帧
首先生成两个3行两列的数据帧

df_1 = pd.DataFrame({
     'col1':np.array([1,2,3]),
     'col2':["A","B","C"]
 })
df_2 = pd.DataFrame({
     'col1':np.array([4,5,6]),
     'col2':["D","E","F"]
 })
#纵向上连接,连接结果是6行2列
print(pd.concat([df_1,df_2]))
#    col1 col2
# 0     1    A
# 1     2    B
# 2     3    C
# 0     4    D
# 1     5    E
# 2     6    F
#横向上连接,加入axis = 1
print(pd.concat([df_1,df_2],axis=1))
#    col1 col2  col1 col2
# 0     1    A     4    D
# 1     2    B     5    E
# 2     3    C     6    F

2-4-12数据帧的列操作

sample_df = pd.DataFrame({
     'col1':sample_array,
     'col2':sample_array * 2,
     'col3':["A","B","C","D","E"]
 })
print(sample_df)
#    col1  col2 col3
# 0     1     2    A
# 1     2     4    B
# 2     3     6    C
# 3     4     8    D
# 4     5    10    E

点操作符

print(sample_df.col2)
# 0     2
# 1     4
# 2     6
# 3     8
# 4    10
# Name: col2, dtype: int32

方括号

print(sample_df["col2"])
# 0     2
# 1     4
# 2     6
# 3     8
# 4    10
# Name: col2, dtype: int32

提取多列

在方括号中以列表的形式指定多个列名

print(sample_df[["col2","col3"]])
#    col2 col3
# 0     2    A
# 1     4    B
# 2     6    C
# 3     8    D
# 4    10    E

删除drop

print(sample_df.drop("col1",axis=1))
#    col2 col3
# 0     2    A
# 1     4    B
# 2     6    C
# 3     8    D
# 4    10    E

2-4-13数据帧的行操作

head函数

使用head函数提取sample_df最上面的3行

print(sample_df.head(3))
#    col1  col2 col3
# 0     1     2    A
# 1     2     4    B
# 2     3     6    C

query函数

一个条件

query更加灵活地提取函数,如提取第一行

print(sample_df.query('index == 0'))
#   col1  col2 col3
#0     1     2    A

可以按照各种各样地条件提取函数
只获取col3列中值为A的行

print(sample_df.query('col3 == "A"'))
#    col1  col2 col3
# 0     1     2    A
指定多个条件

或-| 也可以叫作or条件

print(sample_df.query('col3 == "A" | col3 == "D"'))
#    col1  col2 col3
# 0     1     2    A
# 3     4     8    D

且也叫做and条件

print(sample_df.query('col3 == "A" & col1 == 3'))
# Empty DataFrame
# Columns: [col1, col2, col3]
# Index: []

同时指定列和行的条件

print(sample_df.query('col3 == "A"')[["col2","col3"]])
#   col2 col3
# 0     2    A

还有许多种提取数据的方法

2-4-14序列

查看类型

print(type(sample_df))
#<class 'pandas.core.frame.DataFrame'>
print(type(sample_df.col1))
#<class 'pandas.core.series.Series'>

可以使用np.array,转换为数组

print(np.array(type(sample_df.col1)))
#<class 'pandas.core.series.Series'>
print(type(sample_df.col1.values))
# <class 'numpy.ndarray'>

2-4-15函数文档

help()函数

参考资料

[日] 马场真哉 著, 吴昊天 译. 用Python动手学统计学[M]. 1. 人民邮电出版社, 2021-06-01.
菜鸟网站python3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值