python数据分析与可视化

大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,现在让我们一起来看看吧!

一、Jupyter notebook快捷键

基础快捷键

shift+enter 运行本单元格,选中下个单元格
ctrl+enter 运行本单元格
alt+enter 运行本单元格,并在其下插入新单元格

命令模式下:

Y 转换为代码状态
M 转换成Markdown状态
R转换成raw状态
1 设置1级标题
2设置2级标题
3设置3级标题
A在上方插入单元格
B在下方插入单元格
1、代码单元,左边有In[ ]:符号,
2、Markdown单元
Enter+Shift同时按是运行
3、shift+M 合并选择的单元
Crtl+s 或者 s 保存当前单元格
H 显示快捷帮助

编辑模式下:

Tab 代码补全或缩进

shift +tab 提示

ctrl+]缩进

ctrl+[ 解除缩进

ctrl+A 全选

ctrl+z 撤销

esc 切换命令模式

shift + enter 运行本单元,选中下一单元

ctrl +enter 运行本单元

alt + enter 运行本单元,在下面插入1单元

ctrl+s 保存

ctrl+/ 注释整行/撤销注释

在行前加一个“#”字符代表一级标题,加两个“##”字符代表二级标题,以此类推
对于无序列表,使用星号、加号或者减号作为列表标记。
对于有序列表,则是使用数字“.”“(一个空格)”朴素贝叶斯算法代码实现,朴素贝叶斯算法的作用
加粗/斜体:前后有两个星号或下划线表示加粗,前后有 3 个星号或下划线表示斜体。
代码的第一行表示表头,第二行分隔表头和主体部分,从第三行开始,每一行代表一个表格行;列与列之间用符号“|”隔开,表格每一行的两边也要有符号“|”

二、numpy模块

NumPy(Numerical Python)是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算

相对于python来说

对于同样的数值计算任务,使用numpy要比直接编写Python代码便捷的多

numpy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升性能是与数组中的元素成比例的

numpy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得numpy比纯Python代码高效得多

NumPy 最重要的一个特点是其N 维数组对象ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引

ndarrav对象是用于存放同类型元素的多维数组

ndarray 中的每个元素在内存中都有相同存储大小的区域

1、使用创建列表作为array参数

import numpy as np
# 创建一维数组
arr1=np.array([1,2,3,4,5])
print(arr1)
# [1 2 3 4 5]
print(type(arr1))
# <class 'numpy.ndarray'>
# 创建一维数组

arr1=np.array([1,2,3,4,5])
arr1
# array([1, 2, 3, 4, 5])
print(type(arr1))
<class 'numpy.ndarray'>
在jupyter botebook中,是否使用print函数的区别就在于输出结果的形式
使用列表创建二维数组
arr2=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(arr2)
# [[ 1  2  3  4]
# [ 5  6  7  8]
# [ 9 10 11 12]] 

查看数据轴的个数 ndim
# 秩,数据轴的个数
arr1.ndim
# 1
arr2.ndim
# 2
查看数组的维度
# 三行四列 
arr2.shape
# (3,4)
查看数组类型
arr2.dtype
# dtype('int32')
查看数组元素个数
arr2.size
# 12
查看数组每个元素大小
arr2.itemsize
# 4
创建数组时可以设定数组元素的类型
arr3 = np.array([[1,2,3],[4,5,6]],float) # 方法一
arr3 = np.array([[1,2,3],[4,5,6],dtype=float) # 方法二
重新设定数组的形状
arr4 = np.array([[1,2,3,4],[5,6,7,7],[8,9,9,9]
arr4.reshape(4,3) # 方法一(不改变原数组)
arr4.shape(4,3)   # 方法二(改变原数组)
使用字符串作为array的参数
a3 = np.array("abcdefg")
a3
# array('abcdefg', dtype='<U7')
使用元组作为array的参数
a4 = np.array((1,2,3))
a4
# array([1, 2, 3])
字典作为array的参数
a5 = np.array({"zhang":12,"dd":45})
a5
# array({'zhang': 12, 'dd': 45}, dtype=object)
zeros()函数创建数组
np.zeros((2,3))        # 创建两行三列的全0数组
# array([[0., 0., 0.],
#       [0., 0., 0.]])
ones()函数创建数组
np.ones((2,3))         # 创建全1数组
# array([[1., 1., 1.],
#        [1., 1., 1.]])
 np.ones((2,3))*255   # 可以这样用
# array([[255., 255., 255.],
#       [255., 255., 255.]])
eye函数创建数组
np.eye(3)          # 创建对角线元素为1,其他为0,类似单位矩阵
#array([[1., 0., 0.],
#      [0., 1., 0.],
#       [0., 0., 1.]])

2、Pandas 数据分析(数据分析的重点部分)

Pandas 有3种数据结构,系列(Series)、数据帧(DataFrame)、和面板(Panel)
这些数据都可以构建在Numpy数组之上。

1、Series(系列)

Series 是一个带有 名称 和索引的一维数组,特点:均匀数据、尺寸大小不变、数据值可变等。
Series能够保存任何类型的数据(整数、字符串、浮点数、python对象等。

Pandas中的Series构建函数
pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)

参数

参数Series函数的参数
data数据采取各种形式,如ndarray、list、constasnts
index索引值必须是唯一的和散列的,与数据长度相同
dtypedtype指定数据类型,如果没有,将推断数据类型
nameSeries对象的名称属性
copy默认为False,返回一个视图,如果Series对象元素发生变化,影响原数组data; 设置为True,则为深拷贝,Series对象元素发生变化不影响原数组data.

指定copy = True,则对Series数组进行修改不影响原数组data

可以用数组、字典、标量值或常数创建Series,还可以创建一个空的系列。

1、列表方式创建 : pd.Series([],index=[])

import pandas as pd
import numpy as np
s = pd.Series(np.random.randint(1,10,size=(3,)),index=['a','b','c'])
s

2、字典方式创建 : pd.Series({})

dic = {"A":1,"B":2,"C":3,"D":2}
s2 = pd.Series(dic)  # 字典的键是索引,字典的值是系列的值
s2
import pandas as pd
import numpy as np
data = np.array(["a","b","c","d","e"])
s1 = pd.Series(data)
s2 = pd.Series(data,index=[100,101,102,103,104])
# 可以用索引来获取值
s1[0:2]
s2[100,102]

series索引有五种方式:索引、序号、逻辑值查找、切片,数组

删除Series元素
import pandas as pd
lst = [1,3,5,6,10,23]
s = pd.Series(lst)
s[6]=12
s

del s[6]  # 修改原序列,可以是索引的标签名也可以是索引序号
s 

s.drop(5)  # 默认,不修改原序列

# s.drop(labels, axis=0, level=None, inplace=False, errors='raise')
s.drop(5,inplace=True)   # 设定inplace=True),可修改原序列



s


s.pop(4)  # 修改原序列

1.Series序列的属性
2.index:索引(标签)
3.values:数组数据
4.name:数组对象的名称
5.shape:数组形状
6.dtypes:数组数据类型
7.ndim:数组的维度

2、数据帧(DataFrame)

数据帧(DataFrame)是一个具有异构数据的二维数组,其特点是异构数据、大小可变、数据多变。
数据以行和列表示,每行是一条记录(对象),每列表示一个属性,属性数据具有数据类型。例如,姓名是字符串,年龄是整数

姓名性别年龄身高班级
小明201781班
小花221651班
小兰191632班
小何211752班

在这里插入图片描述

Pandas中的DataFrame构建函数

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
DataFrame()函数的参数

参数描述
data数据采取各种形式,如ndarray、list、constasnts
index对于行标签,要用于结果帧的索引时,可选默认值np.arange(n)
columns对于列标签,可选默认语法为:np.arange(n)
dtypedtype每列的数据类型
copy复制数据,默认为false

Pandas数据帧可以使用各种输入创建,如列表、字典、系列、Numpy的ndarrays、Series或另一个数据帧(DataFrame)等

一、合并函数concat()

pd.concat(objs,axis=0,join='outer',jokin_axes=None,ignore_index=False,keys=None)

函数的参数说明如下:
  • objs:指定需要合并的对象,可以是序列、数据框或面板数据构成的列表。
  • axis:指定数据合并的轴,默认为0,表示合并多个数据的行(行数发生了变化),如果1,则表示合并多个数据的列(列数发生了变化)。
  • join:指定合并的方式,默认为outer,表示合并所有数据,如果改为inner,则表示合并公共部分的数据。
  • join_axes:合并数据后,指定保留的数据轴。
  • ignore_index:bool类型的参数,表示是否忽略原数据集的索引,默认为False,如果设置为True,则表示忽略原索引并生成新索引。
  • keys:为合并后的数据添加新索引,用于区分各个数据部分。
- 对于合并函数concat()有两点需要强调:
  • 1 如果纵向合并多个数据集,即使这些数据集都含有“姓名”变量,但变量名称不一致,如Name和name,通过合并后将会得到错误的结果。
  • 2 join_axes参数的使用,例如该参数等于[df.index],则表示保留与df行标签值一样的数据,但需要配合axis=1一起使用(即实现的是变量横向合并操作);如果等于[df.columns],则保留df中所有变量值一样的数据,但不需要添加axis=1的约束。
import pandas as pd
dict1={
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3']}
df1=pd.DataFrame(dict1)
print(df1)

dict2={
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']}
df2=pd.DataFrame(dict2)
print(df2)
df3 = pd.concat([df1,df2],axis=0,join='outer',ignore_index=True)
print(df3)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值