Python:Python数据分析基础教程/王斌会 第三章 Python编程分析基础

Python数据分析基础教程/王斌会

第三章 Python编程分析基础

在这里插入图片描述

- 3.1Python的数据类型

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

- 3.2数值分析库numpy

3.2.1一维数组

在这里插入图片描述
其他有帮助的生成数:

np.random.randint(1,9)   #1~9随机数
np.random.rand(10)       #10个均匀随机数
np.random.randn(10)      #10个正态随机数

3.2.2二维数组

在这里插入图片描述
3.2.3其他数组 在这里插入图片描述
一点点补充

np.empty([3,3]) #空数组
np.zeros((3,3)) #零矩阵
np.ones((3,3))  #1矩阵
np.eye(3)       #单位阵

- 3.3数据分析库pandas

3.3.1序列Series*****

在这里插入图片描述在这里插入图片描述
说明:

#(3)序列合并
pd.concat([S2,S3],axis=0)    #按行并序列
pd.concat([S2,S3],axis=1)    #按列并序列

3.3.2数据框DateFrame*****

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

###3.3.2 数据框:DataFrame
#(1)生成数据框
pd.DataFrame()      #生成空数据框

#(2)根据列表创建数据框
pd.DataFrame(X)
pd.DataFrame(X,columns=['X'],index=range(5))
pd.DataFrame(weight,columns=['weight'],index=['A','B','C','D','E'])

#(3)根据字典创建数据框
'''通过字典列表生成数据框是Python较快捷的方式 '''
df1=pd.DataFrame({'S1':S1,'S2':S2,'S3':S3});df1
df2=pd.DataFrame({'sex':sex,'weight':weight},index=X);df2

#(4)增加数据框列
df2['weight2']=df2.weight**2; df2   # 生成新列

#(5)删除数据框列
del df2['weight2']; df2   #删除数据列

#(5)缺失值处理
df3=pd.DataFrame({'S2':S2,'S3':S3},index=S1);df3
df3.isnull()#是缺失值返回True,否则范围False
df3.isnull().sum()#返回每列包含的缺失值的个数
df3.dropna()   #直接删除含有缺失值的行,多变量谨慎使用
#df3.dropna(how = 'all')#只删除全是缺失值的行

#(7)数据框排序
df3.sort_index()         #按index排序
df3.sort_values(by='S3') #按列值排序

总结:pd.DataFrame()中的参数

文章参考

3.3.3数据的读写

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

总结:pd.read_excel()中的参数

Basic Python Knowledge You Need To Know:导入Excel之pd.read_excel参数小结

3.3.4数据的保存

在这里插入图片描述

3.3.5对数据框的操作

在这里插入图片描述
补充与汇总:

####3.3.4.1 基本信息

#(1)数据框显示
BSdata.info()            #数据框信息
BSdata.head()            #显示前5行
BSdata.tail()            #显示后5行

#(2)数据框列名(变量名)
BSdata.columns           #查看列名称

#(3)数据框行名(样品名)
BSdata.index             #数据框行名

#(4)数据框维度
BSdata.shape             #显示数据框的行数和列数
BSdata.shape[0]          #数据框行数
BSdata.shape[1]          #数据框列数

#(5)数据框值(数组)
BSdata.values            #数据框值数组

3.3.6选取变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
条件取样

BSdata.身高 # 取一列数据,BSdata['身高']
BSdata[['身高','体重']]  #取两列数据
BSdata.iloc[:,2] # 取1列
BSdata.iloc[:,2:4] # 取3 、4 列

BSdata.loc[3] #取1行
BSdata.loc[3:5] #取3-5行

BSdata.loc[:3,['身高','体重']]
BSdata.iloc[:3,:5] #0到2行和1:5列

BSdata[BSdata['身高']>180]
BSdata[(BSdata['身高']>180)&(BSdata['体重']<80)]

3.3.7数据框的运算

在这里插入图片描述

BSdata['体重指数']=BSdata['体重']/(BSdata['身高']/100)**2
round(BSdata[:5],2)

pd.concat([BSdata.身高, BSdata.体重],axis=0)
pd.concat([BSdata.身高, BSdata.体重],axis=1)

BSdata.iloc[:3,:5].T###转置*****

补充:round()函数的用法

附一个简单的例子

In [1]: round(1.5324)
Out[1]: 2.0

In [2]: round(1.5324, 2)
Out[2]: 1.53

- 3.4基础编程运算

在这里插入图片描述

- 附件:第三章代码汇总

#3 Python 编程分析基础
##3.1 Python 数据类型
###3.1.1Pyhton 对象
x=10.12   #创建对象x
del x   #删除对象x
###3.1.2 数据基本类型
#数值型
n=10       #整数
n
print("n=",n)
x=10.234   #实数
print(x)
print("x=%10.5f"%x)
#逻辑型
a=True;a
b=False;b
10>3
10<3
#字符型
s='IlovePython';s
s[7]
s[2:6]
s+s
s*2
float('nan')
###3.1.3 标准数据类型
#(1)List(列表)
list1=[] # 空列表
list1
list1=['Python',786,2.23,'R',70.2]
list1 # 输出完整列表
list1[0] # 输出列表的第一个元素
list1[1:3] # 输出第二个至第三个元素
list1[2:] # 输出从第三个开始至列表末尾的所有元素
list1*2 # 输出列表两次
list1+list1[2:4] # 打印组合的列表

X=[1,3,6,4,9];X
sex=[' 女',' 男',' 男',' 女',' 男']
sex
weight=[67,66,83,68,70];
weight
#(2)Tuple(元组)
#(3)Dictionary(字典)
{}            #空字典
dict1={'name':'john','code':6734,'dept':'sales'};dict1 #定义字典
dict1['code']  # 输出键为'code' 的值
dict1.keys()   # 输出所有键
dict1.values() # 输出所有值
dict2={'sex': sex,'weight':weight}; dict2 #根据列表构成字典

##3.2 数值分析库numpy
###3.2.1 一维数组(向量)
import numpy as np       #加载数组包
np.array([1,2,3,4,5])         #一维数组
np.array([1,2,3,np.nan,5])    #包含缺失值的数组

np.array(X)              #列表变数组
np.arange(9)             #数组序列
np.arange(1,9,0.5)       #等差数列
np.linspace(1,9,5)       #等距数列

np.random.randint(1,9)   #1~9随机数
np.random.rand(10)       #10个均匀随机数
np.random.randn(10)      #10个正态随机数

###3.2.2 二维数组(矩阵)
np.array([[1,2],[3,4],[5,6]]) #二维数组
A=np.arange(9).reshape((3,3));A # 形成3x3

###3.2.3 数组的操作
A.shape
np.empty([3,3]) #空数组
np.zeros((3,3)) #零矩阵
np.ones((3,3))  #1矩阵
np.eye(3)       #单位阵

##3.3 数据分析库pandas
import pandas as pd   #加载数据分析包

###3.3.1 序列:Seriers
#(1)创建序列(向量、一维数组)
pd.Series()           #生成空序列
#(2)根据列表构建序列
X=[1,3,6,4,9]
S1=pd.Series(X);S1
S2=pd.Series(weight);S2
S3=pd.Series(sex);S3
#(3)序列合并
pd.concat([S2,S3],axis=0)    #按行并序列
pd.concat([S2,S3],axis=1)    #按列并序列
#(4)序列切边
S1[2]
S3[1:4]

###3.3.2 数据框:DataFrame
#(1)生成数据框
pd.DataFrame()      #生成空数据框
#(2)根据列表创建数据框
pd.DataFrame(X)
pd.DataFrame(X,columns=['X'],index=range(5))
pd.DataFrame(weight,columns=['weight'],index=['A','B','C','D','E'])
#(3)根据字典创建数据框
'''通过字典列表生成数据框是Python较快捷的方式 '''
df1=pd.DataFrame({'S1':S1,'S2':S2,'S3':S3});df1
df2=pd.DataFrame({'sex':sex,'weight':weight},index=X);df2
#(4)增加数据框列
df2['weight2']=df2.weight**2; df2   # 生成新列
#(5)删除数据框列
del df2['weight2']; df2   #删除数据列
#(6)缺失值处理
df3=pd.DataFrame({'S2':S2,'S3':S3},index=S1);df3
df3.isnull()#是缺失值返回True,否则范围False
df3.isnull().sum()#返回每列包含的缺失值的个数
df3.dropna()   #直接删除含有缺失值的行,多变量谨慎使用
#df3.dropna(how = 'all')#只删除全是缺失值的行
#(7)数据框排序
df3.sort_index()         #按index排序
df3.sort_values(by='S3') #按列值排序

###3.3.3 数据框的读写
####3.3.3.1pandas读取数据集
#(1)从剪切板上读取
#BSdata=pd.read_clipboard();
BSdata[:5]  #从剪切板上复制数据
#(2)读取csv格式数据
#BSdata=pd.read_csv("BSdata.csv",encoding='utf-8') #注意中文格式
BSdata[6:9]
#(3)读取Excel格式数据
BSdata=pd.read_excel('DaPy_data.xlsx','BSdata');BSdata[-5:]

####3.3.3.2pandas数据集的保存
BSdata.to_csv('BSdata1.csv') #将数据框BSdata保存到BSdata.csv

###3.3.4 数据框的操作
####3.3.4.1 基本信息
#(1)数据框显示
BSdata.info()            #数据框信息
BSdata.head()            #显示前5行
BSdata.tail()            #显示后5行
#(2)数据框列名(变量名)
BSdata.columns           #查看列名称
#(3)数据框行名(样品名)
BSdata.index             #数据框行名
#(4)数据框维度
BSdata.shape             #显示数据框的行数和列数
BSdata.shape[0]          #数据框行数
BSdata.shape[1]          #数据框列数
#(5)数据框值(数组)
BSdata.values            #数据框值数组

####3.3.4.2 选取变量
BSdata.身高 # 取一列数据,BSdata['身高']
BSdata[['身高','体重']]  #取两列数据
BSdata.iloc[:,2] # 取1列
BSdata.iloc[:,2:4] # 取3 、4 列
####3.3.4.3 提取样品
BSdata.loc[3] #取1行
BSdata.loc[3:5] #取3-5行
####3.3.4.4 选取观测与变量
BSdata.loc[:3,['身高','体重']]
BSdata.iloc[:3,:5] #0到2行和1:5
####3.3.4.5 条件选取
BSdata[BSdata['身高']>180]
BSdata[(BSdata['身高']>180)&(BSdata['体重']<80)]
####3.3.4.6 数据框的运算
BSdata['体重指数']=BSdata['体重']/(BSdata['身高']/100)**2
round(BSdata[:5],2)

pd.concat([BSdata.身高, BSdata.体重],axis=0)
pd.concat([BSdata.身高, BSdata.体重],axis=1)

BSdata.iloc[:3,:5].T

#3.4 Python 编程运算
##3.4.1 基本运算
##3.4.2 控制语句
####3.4.2.1 循环语句for
for i in range(1,5):
    print(i)

fruits = ['banana', 'apple',  'mango']
for fruit in fruits:
   print('当前水果 :', fruit)

for var in BSdata.columns:
    print(var)

####3.4.2.2 条件语句if/else
a = -100
if a < 100:
    print("数值小于100")
else:
    print("数值大于100")

-a if a<0 else a

##3.4.3 函数定义

x=[1,3,6,4,9,7,5,8,2];x
def xbar(x):
    n=len(x)
    xm=sum(x)/n
    return(xm)
xbar(x)
np.mean(x)
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值