先啰嗦两句
这里精简的总结了Numpy和Pandas的常用用法,学会了这些,剩下的遇见一个查一个效率也很高呀!
记得不要枯燥的一个命令一个命令的练习,更不要只看不练,上网找成品的代码吧!
先来个切片,索引
这个和这俩的学习没太大关系,使用时关系还是相当大的,也比较重要,我是容易忘,先记录一下。
[:, :]先行后列
[0, 0:4]第1行的第1列到第3列
[0:3, 1]第1到3行的第2列
Numpy
这里设 jason 为一个数组,jason是我小时候用过的英文名。
上面是代码,下面是解释
jason.shape
返回数组的行数和列数:(行,列)
jason.size
返回数组中的元素的个数,就是里面有多少个数。
jason.dtype
返回的是数组中数据的类型,int64呀什么的
下面是个重点:
jason = np.array([[1, 2, 3], [4, 5, 6]])
建立数组,注意前面有几个中括号就是几维数组
其中有个这么个玩应
np.asarray([])
这个玩应用法和 array 是一样的,但是不能通过索引修改数组中的值。
np.zeros([])
np.ones([])
这两个和 array 用法相同,不过多介绍了
jason = np.linspace(起始值,结束值,返回的元素的个数)
jason = np.arange(起始值,结束值,步长)
这两个是生成等差数列的,我感觉下面那个好像更常用一些。
下面是个大重点!
生成随机数组模块
np.random!
接着往下
生成均匀分布数组
jason = np.random.rand()
# 生成0~1的随机数组
# 输入一个数:生成一维数组,参数为元素个数
# 输入a, b这种:生成二维数组,a行b列
jason = np.random.uniform(low, high, size = (a, b))
# 在一个左闭右开的区间生成均匀分布的数组
jason = np.random.randint()
# 用法和uniorm完全一样,只不过这个生成的是整数
这三个好像都比较常用
生成正态分布数组
jason = np.random.randn()
# 生成0~1之间的正态分布数组,参数含义同rand
jason = np.random.normal()
# 参数:均值,标准差,size=(行数,列数)
第一个相对来说更常用一些
接下来是形状修改,也很常用
jason1 = jason.reshape([3,2])
# 把jason变成了3行2列
# 如果是([-1, 2])
# 表示变成2列的就行,爱几行几行
jason.resize([])
# 用法相同,这个是改变jason原有的而不是生成
jason.T
# 转置 这个感觉看一眼这辈子都不会忘了
jason.astype(np.int32)
# 修改数组类型
貌似都比较重要
数组去重,有时候会用到
jason = np.array([[1, 2, 3], [2, 3, 4]])
np.unique(jason) # 去除同党中。。。
# 输出
([1, 2, 3, 4])
运算符,你迟早要用的上的东东
jason > 5
# 将大于5的数返回True 否则返回False
jason[jason > 5] = 1
# 大于5返回1 其他的不变~
常用于整学生成绩这一块
np.all(jason[0:4, :] > 5)
# 如果前5行全部大于5才返回True
np.any(jason[0:2, :] > 5)
# 只要前3行有大于5的,就返回True
接下来
统计
np.max(jason)
# 求最大值
np.max(jason, axis = 0)
# 求每一列的最大值,axis = 1 就是求每一行
# 这个axis行和列可能会调换
# min 最小
# median 中位数
# mean 平均值
# std 标准差
# var方差
还是统计
np.argmax(jason, axis = 0)
# 返回最大值所在的位置
# 如果不传axis,返回的还是位置,就得自己从左往右从上到下数
注意:
数组和数之间的运算是对数组中每个数进行运算
而数组和数组间运算不一定要两个数组完全相同,只要满足一下任意一个对应维数的条件:
注意是对应维数!
- 其中一个数组的某一维度为1
- 这两个数组对应维度相等
若所有组对应的维数均满足上述两个条件的其中一个,则这两个数组就可以进行运算。
Pandas
终于快完事了
Series一维数组
jason = pd.series([2, 9, 7], index = [1, 2, 3])
# 指定索引
# 第一个参数为传入的数组
# 索引可以不传入,即默认索引
# 也可以通过字典传入 这里就不举例了
jason.index
# 返回索引
jason.values
# 返回结果
jason[2]
# 索引
DataFrame二维数组或表格
jason = pd.DataFrame([[2, 3, 4], [3, 5, 7]])
# 下面这个比较好玩
# 这里拿不同超市里的水果举例子
supermaket = ['超市' + str(i) for i in range(jason.shape[0])]
frute = ['西瓜', '葡萄', '苹果']
data = pd.DataFrame(jason, columns = frute, index = frute)
# 这样生成的就是一个表格
# 自己练习一下
这个用字典来生成比较常见
举个栗子
jason = pd.DataFrame({'苹果': [10, 13, 9, 12]
'西瓜': [24, 21, 19, 24]
'葡萄': [17, 16, 21, 15]})
接下来是它的属性介绍
data.shape
# 返回行数和列数
data.columns
# 返回列索引
data.index
# 返回行索引
data.valus
# 返回值
data.T
# 转置
data.head(3)
# 获取前3行
data.tail(3)
# 获取后5行
# 最后这两个不输入参数默认就是5
注意:
这里修改索引只能全体一起改:
data.index = xin_de_suo_yin
data.reset_index()
# 这个命令的意思是再左侧加一列数字作为索引
# 原索引变成index自成一列
# 试一下就知道咋回事了
jason.set_index('apple')
jason.set_index(['water', 'food'])
# 以上两种方式设置新的索引值
读取数据
jason = pd.read_csv("数据保存路径/文件名.csv")
# 也可以_excel 后面就是文件名.excel
总结
终于完事了。
以上省略了部分不常用的代码和pandas的三维代码,有需要的可以自行百度。
这些都是经常能用到的生成和处理数据的命令。