一、python数据分析numpy、pandas库的使用
- 计算机科学
- 2022-07-09
- 220热度
- 0评论
python大数据与机器学习与商业实战
一、数据分析numpy、pandas、matploylib库的使用
1、列表与数组的区别
import numpy as np
a = [1,2,3,4] ## 列表
b = np.array([1,2,3,4]) ##array数组
print(a)
print(b)
print(type(a))
print(type(b))
[1, 2, 3, 4]
[1 2 3 4]
# 通过索引和切片访问列表和数组中的元素
print(a[1])
print(b[1])
print(a[0:2]) #结果都为左闭右开,逗号分隔
print(b[0:2]) #左闭右开,空格分隔
2
2
[1, 2]
[1 2]
a、数组便于运算,乘法时列表是复制元素,数组是对每个单位做乘法
b、列表存储着一维数据,数组可以存储高维数据
#a
c = a * 2
d = b * 2
print(c)
print(d)
[1, 2, 3, 4, 1, 2, 3, 4]
[2 4 6 8]
#b
e = ([1,2],[3,4],[5,6])
f = np.array([[1,2],[3,4],[5,6]])
print(e)
print(f)
([1, 2], [3, 4], [5, 6])
[[1 2]
[3 4]
[5 6]]
2、创建数组的几个方法
a、np.array()
b、np.arange( , , ) 起始值(默认0),终止值,步长(默认1) !注意单词拼写
c、np.random 随机创建一维数组
np.random.randn(3) 创建一个符合标准正态分布的3个随机数
np.random.rand(3) 创建0-1中的三个随机数
二维数组
d、np.arange()+reshape()创建
e、np.random.randint( , , ) 创建随机整数 起始数,终止数,表示创建数组的大小
#a
np.array([4,5,6])
array([4, 5, 6])
#b
np.arange(3,10,0.5)
array([3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. , 7.5, 8. , 8.5, 9. ,
9.5])
#c1
np.random.randn(10)
array([-1.89651766, -0.28272691, -1.54592792, 2.98817033, -0.36047528,
-0.16494408, -1.13499605, 0.19756287, 0.35139366, 0.12337039])
#c2
np.random.rand(10)
array([0.6005858 , 0.22557086, 0.58472974, 0.95913412, 0.13437665,
0.41496966, 0.3050885 , 0.96969384, 0.68968672, 0.48570103])
#d
np.arange(12).reshape(3,4) #随机12个数 转换成3×4的排列
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
#e
np.random.randint(1,6,(3,4))
array([[2, 4, 2, 3],
[1, 4, 5, 3],
[2, 4, 4, 3]])
3、pandas库基础
panel data => pandas
数据结构1:Series 类似于NumPy创建的一维数组,不仅包含数值,也包含一组索引
#1
import pandas as pd
s1 = pd.Series(['张三','李四','王五'])
print(s1)
s1[2] #可以通过s2定位到第2个元素
0 张三
1 李四
2 王五
dtype: object
'王五'
数据结构2:DataFrame 类似于NumPy库创建的二维数组,有行索引和列索引(从0开始的)
a 通过列表创建DataFrame数组
#2 通过列表创建DataFrame数组的方式
import pandas as pd
a = pd.DataFrame([[1,2],[3,4],[5,6]])
print(a)
0 1
0 1 2
1 3 4
2 5 6
#自定义列索引(columns)和行索引(index)的名称
a = pd.DataFrame([[1,2],[3,4],[5,6]],columns=['data','score'],index=['A','B','C'])
a #jupyter notebook中可以用a表示print(a)
data | score | |
---|---|---|
A | 1 | 2 |
B | 3 | 4 |
C | 5 | 6 |
#3 另一种创建DataFrame数组的方式
a = pd.DataFrame()
date = [1,3,5]
score = [2,4,6] #data与score的长度要一致
a['date'] = date
a['score'] = score
a
date | score | |
---|---|---|
0 | 1 | 2 |
1 | 3 | 4 |
2 | 5 | 6 |
b 通过字典创建DataFrame数组的方式
字典:
# 通过字典创建DataFrame数组,并自定义列索引
b = pd.DataFrame({'a':[1,3,5],'b':[2,4,6]},index=['X','Y','Z'])
b
a | b | |
---|---|---|
X | 1 | 2 |
Y | 3 | 4 |
Z | 5 | 6 |
# 字典变为行索引用from_dict()函数将字典转换成DataFrame,
# 并设置orient参数为index,orient指定字典 键为列索引还是行索引,默认为columns
c = pd.DataFrame.from_dict({'a':[1,3,5],'b':[2,4,6]},orient='index')
print(c)
0 1 2
a 1 3 5
b 2 4 6
# 使用DataFrame的T属性对DataFrame进行转置
b = pd.DataFrame({'a':[1,3,5],'b':[2,4,6]})
print(b)
print(b.T)#打印转置后的表格
a b
0 1 2
1 3 4
2 5 6
0 1 2
a 1 3 5
b 2 4 6
c 通过二维数组创建DataFrame
d = pd.DataFrame(np.arange(12).reshape(3,4),index=[1,2,3],columns=['A','B','C','D'])
d
A | B | C | D | |
---|---|---|---|---|
1 | 0 | 1 | 2 | 3 |
2 | 4 | 5 | 6 | 7 |
3 | 8 | 9 | 10 | 11 |
4 修改行索引或者列索引名称
# 使用rename函数
a = pd.DataFrame([[1,2],[3,4]],columns=['date','score'],index=['A','B'])
print(a)
date score
A 1 2
B 3 4
# rename函数重命名
a = a.rename(index={'A':'阿里','B':'腾讯'},columns={'date':'日期','score':'分数'})
print(a)
日期 分数
阿里 1 2
腾讯 3 4
# values查看index的值
a.index.values
print(a)
日期 分数
阿里 1 2
腾讯 3 4
# set_index()函数 将行索引修改为某列的内容
# 修改inplace参数为true 直接修改原值
a = a.set_index('日期')
a
分数 | |
---|---|
日期 | |
1 | 2 |
3 | 4 |
a = a.reset_index() #把行索引换成数字索引
a
index | 日期 | 分数 | |
---|---|---|---|
0 | 0 | 1 | 2 |
1 | 1 | 3 | 4 |