No.0.0.1 基础 数据函数与numpy初识与pandas 全总结

两个重要的包:numpy,pandas

01创建array ,数组(能矢量计算)

#01 构造方法
np.array([裂表])

#02 二维数组
data=[[1,2,3,4],[5,6,7,8]]
arr2=np,array(data2)
arr2.shape  #输出形状  out(2,4)  2行 4 列
#03 用元组创建array
data3=(1,2,3,4,5)#tuple()
arr3=np.array(data)
arr3#out:array([1,2,3,4,5])

#04  构建方法

arr6=np.zeros((3,2))# 创建一个三行两列的 全0数组
arr6_1=np.zeros_like(arr6)# 形状和arr6 相同的全0

arr7=np.ones((3,2))  # 全0数组



# 05 正太分布数组

arr9=np.empty(20)


#06  有序构建  range 的步长不能为浮点型 arange()可以浮点 属于python 范畴
arr10=np.array(range(10))

# 07 np.arange 属于numpy 范畴 numpy 是python写的,(理解继承和多态)
arr10_1=np.arange(1,10,0.1)
arr10_1

# 08 创建随机数组
np.random.rand(10)
arr12=np.random.randn(10000)#创建正太分布随机数组
arr12.mean() # 计算平均数
arr12.std() #  计算标准差
# 09创建带形状的随机数组
np.random.seed(42) # 指定随机种子42
arr13=np.random.randint(1,100,10).reshape(5,2)
arr13
#10 创建线性数组
arr14=np.linspace(11,21,100,endpoint=False)# 从11 切到21,切100份,结尾为False 不包括
# 11 创建单位矩阵
arr15=np.eye(5)# 5行5列  
arr15


# 03矢量计算 
arr3*2  #arr3 所有元素乘以2
#04索引
arr2[0] 取出第0#05赋值
arr2[0]=5  # 让0行等于5
#06 字典和集合可以创建 array 但不支持矢量计算

######################################
#numpy 方法
# numpy 的常用属性和方法
import numpy as np
data1 = [[6, 7.5, 8, 0, 1],[1,2,3,4,5]]
arr1 = np.array(data1)

# print(data1)
# print(arr1) # 输出数组,注意和列表的区分
print(arr1.ndim) # 输出数组维度的个数
print(arr1.shape) # 输出数组的维度,即数组是几行几列组成的
print(arr1.size) # 输出数组的元素总数,对于m行n列的数组,元素总数为m*n
print(arr1.dtype) # 输出数组元素的类型
print(arr1.itemsize) # 输出元素占用字节的大小
arr1

1.1单位矩阵案例
arr15=np.eye(5)
arr15

输出:输出

02 方法

# 01 布尔索引,  axis=0为行,=1为列
import numpy as np
names=np.array(['1','2','3','4','5','6','7'])
col=np.array(range(4))
data=np.random.randn(7,4)
print(data[names=='2'])# 原理: names=='2' 会out出一个array([False,  True, False, False, False, False, False]),给data,data输出当array=true这一行
data[names=='2',col==1]# 行和列同时索引
data[names=='2',(col==1)|(col==2)] # 逻辑或,记得加括号 先行后列
 

#02  花式索引
arr[[4,1]]# 先取第四行,再取第一行
arr[[4,3,7]]
arr[[-1,-3,3]]
# 03 转置
arr.T # 行列互换,arr[0,0] 不变,左下角和右上角的元素互换位置  属性
arr.transpose    #方法 结果和上面一样

#04 函数

arr=np.array([1,np.e,np.e**2,0])

print("数组最大值:%s"%(np.max(arr)))
print("数组最小值:%s"%(np.min(arr)))
print("以e为基数求e的数组次方%s"%np.exp(arr))
print("以10为低求数组对数%s"%np.log(arr))
print("开方%s"%np.sqrt(arr))
print("平均值%s"%np.mean(arr))
print("标准差%s"%np.std(arr))
print("极小值%s"%np.argmin(arr))
print("极大值%s"%np.argmax(arr))
print("判断极限值:%s"%np.isinf(arr))


# 05 where 应用

xarr
yarr
cond # 条件返回True 或False
  #   案例
np.where(cond,xarr,yarr)  # 当cond为true时,从xarr取值,否则从yarr取值(方法)

#06 sort排序
np.sort(arr)
np.sort(arr,axis=1) #按列排序

#07 堆叠 要求堆叠方向维度一致
arr1
arr2
np.hstack((a,b)) #横向堆叠 往右侧加
np.vstack((a,b)) # 纵向堆叠 往底部加  可联合 arr.T 一起用

#08 数据自动向上转型
np.arange(5,dtype='float64')
# 09 广播机制



03创建Series nan类型是浮点型

import numpy as np
import pandas as pd

#创建代码
ser=pd.Series(可迭代对象,数据类型)这时index会默认1234567.。。
ser2=pd.Series(可迭代对象,index=[])
#引用
ser[]

ser.isnull()
pd.isnull(ser)

04DataFrame

import numpy as np
import pandas as pd

#01 创建方式,
data={"city":['a','b','c','d'],
		"year":[1,2,3,4],
		'population':1,2,3,4]}
fram=pd.DataFrame(data)		

##键成了列名	

# 02索引的单列是series		
frame['year']

#03 frame 的列花式索引
frame['population',"city","year"]
#04 增加一列为空值
frame2=pa.DataFrame(data,clumns=['population',"city","year",'debt'])# 指定clumns
		## 新增的debt 列,值全部为NaN
# 05 index
frame2.index 
# 06 values
frame2.values  # 是一个数组array

# 07 DataFramed 格式
frame2=pd.DataFrame(data,clumns=['population',"city","year",'debt'],
					index=[])# 指定clumns 列名,行名  注意:列可以多指定,行不能多指定
					
# 08 嵌套字典生成 DAtaframe

pop={"北京"{2001:2.4,2002,2.9},
	'南京':{2000:1.5,2001:1.7,2002,3.6)}
frame3=pd.DataFrame(pop)
## out:"北京",南京为列名,2000,2001,2002,变成行名



#  1.2	索引
##1.2.1 列索引
# 方法1
frame2['city']	#方法
#02
frame2.city #属性
# 03 loc 进行行+列索引
frame2.loc[ ['a','b'], ['year','poplation'] ]  # 前面行,后面列
# 04 iloc用整数进行索引
frame2.iloc[0:20:3]
frame2.iloc[0:20:3]
frame2.iloc[0:2[0,3]] # 取0,3两列
###1.2.2 运算

# 01 赋值
frame2['debt']=1.5
#02 删除
del frame2['debt']
#02.1删除行或列
frame2.drop(['year'],axis=1,inplace=False) # 默认方向axis=0 行方向 inplace控制是否在原数据上删除

#03 添加 创建新列
frame2['location']=['1','2','3','4'] #行数要对应上 
#04 apply方法 
farme=pd.DataFrame(np.random.randn(4,3),colums=list('bde'),index=list('1234'))#4行3列

def function:
	return x+1

frame['b'].apply(function)

frame['b'].apply(lambda x:x+1)


#05 索引排序: sort_index 有两个索引,一个行索引,一个列索引 默认对行进行排序,按行的名字字母排列 顺序(默认升序)
frame.sort_index() #按字母对行的名字进行排序
frame.sort(axis=1,ascending=False)  #按列降序
# 06 对value 也就是说对dataframe的数值数据进行排序
		# #列方向
frame.sort_values(by='b',ascending=False) # False 代表降序,从大到小
#7 数据单不重复详情集
frame.列名.unique 
# 8删除重复数据
 frame.drop_duplicates(['列1','列2']keep='last'(frist)) 
#9 显示重复数据 返回列表
 frame.duplicated()
 #10 填充值
 frame.列名.fillna(frame.列名.mean())#mode() std
 frame.列名.fillna({第几列:值,第几列:值})# 字典填充
 
frame.列名.fillna(method='ffill',limit=n)#  前向填充  bfill  后向  limit 限制填充
# 11 map 映射
frame.列名.map.(字典) 

apply 和  data.replace 也可以达到

以下是乱七八糟的运行截图

————————————————————————————————————————————————

lambda

	映射函数map()
-  	x代表后面列表中每一个数,x+2表示将每一个x加2
list1=map(lambda x:x+2,[1,2,3,4,5,6,7,8,10,12])#加2
list(list1)

结果:
在这里插入图片描述

filter 过滤函数

筛选出x%2==0的数

在这里插入图片描述

-reduce  累计算数   计算[1,2,3,45,5,6,7,8] 累加结果
from functools import reduce
a_2=reduce(lambda x ,y:x+y  ,[1,2,3,45,5,6,7,8])

------在这里插入代码片

numpy

import numpy as np

my_arr=np.arange(1000000)

矩阵运算

#1.4数组运算

arr = np.array([[1,2,3],[4,5,6]])

arr


#自加
print(arr+arr)
print("---------")
#自减
print(arr-arr)
print("---------")
#所有数乘5
print(5*arr)
print("---------")
#自乘
print(arr*arr)
print("---------")
#矩阵运算
print(arr.dot(arr.T))#矩阵运算(行乘列)

在这里插入图片描述

矩阵索引

import numpy as np
np1=np.array([1,2,3,4,5,6,7,8,9]).reshape(3,3)#方法1
np2=np.array([[1,2,3],[4,5,6],[7,8,9]])#方法2
np3=np.arange(9).reshape(3,3)#方法3
#np.zores()
print(np1)
print("----------")
print(np2)
print("----------")
print(np3)

执行结果

在这里插入图片描述

索引
axis0代表列
axis1代表行
arr[i,j],其中 i代表行数,j代表列数,
print("索引坐标(0,0):",np3[0,0])
print("----------")
print("索引所有行和列:",np3[0:3,0:3])

代码结果:
在这里插入图片描述

函数

1.常用函数
arr=np.array([1,np.e,np.e**2,0])


print("数组最大值:%s"%(np.max(arr)))
print("数组最小值:%s"%(np.min(arr)))
print("以e为基数求e的数组次方%s"%np.exp(arr))
print("以10为低求数组对数%s"%np.log(arr))
print("开方%s"%np.sqrt(arr))
print("平均值%s"%np.mean(arr))
print("标准差%s"%np.std(arr))
print("极小值%s"%np.argmin(arr))
print("极大值%s"%np.argmax(arr))
print("判断极限值:%s"%np.isinf(arr))

运行结果:
在这里插入图片描述

2.提高函数 where 函数
#where 判断

xarr_1=np.array([1,2,3,4,5,6,7,8])
yarr_2=np.array([1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8])
cond=([True,False,True,True,True,False,False,False])

np.where(cond,xarr_1,yarr_2)

结果:

在这里插入图片描述

2020 中科js

01去除pandas dataframe科学计数法

pd.set_option('float_format', lambda x: '%.0f' % x)

02删除重复值

data.drop_duplicates(['列名'],keep='first')

03 dataframe 匹配模糊values

data.字段名[data.字段名.str.contains('正则表达式')]  #正则表达式点号 加 “\”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Captain_Data

打赏一下~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值