数据分析

numpy模块
1,数组的创建语法:
一维数组:

/ : 表示或者

arr = np.array(列表/range(5))

二维数组:
arr2 = np.array([[1,2,3,4],[5,6,7,8]])

2,shape:一个表示各维度大小的数组组arr2的维度:arr2.shape
,查看各数组的结构(几行几列)

3,dtype:一个用于说明数组数据类型的对象
arr2的数组类型:arr2.dtype
4,10代表一维数组的元素个数:arr_zeros = np.zeros(10)

5, 3,一维数组的个数,6,每个数组的元素个数:arr_ones = np.ones((3,6))

6, 2代表三维度值在数组中的个数,3代表二维度值在数组中的个数,2代表一维度值在数据中的个数 :
arr_empty = np.empty([2,4])

7, np.arange(5) :构建一维数组[0,1,2,3,4] —>序列数组
np.array([[6,7,8,9],np.arange(4)]) :构建二维数组[[6,7,8,9][0,1,2,3,4]]

8,(matrix)矩阵的创建(一般表示二维数组)
np.matrix(np.arange(5)) np.maxtrix([[6,7,8,9],np.arange(4)])

arange返回的是ndarray,
range返回的是列表
np.arange(8).reshape(4,2):生成4行2列的二维数组

ndarray数据类型可一致可不一致:如果其中包含dtype,数据类型必须一致

9,arr = np.array([1,2,3],dtype = np.int32)
[含dtype数据类型必须一致,不指定默认int64]
arr.dtype

10,arr = np.array([1.1,2.7,3.5],dtype = np.int64)
arr = [1,2,3] 将arr数组中的每一个元素类型由 float64 浮点型 转换成 int64 整型数据, 因此小数部分被截取只保留整数部分。

11,ndarray数据类型的转换
arr = np.array(range(5),dtype = np.int64)
arr_float = arr.astype(np.float64)
#整数转小数,若小数转整数会被截取,若有字符数字,也可以转为数值类型

12,将数组的类型转换成另一个数组的类型
arr_int = np.arange(5)
#int转换为float
arr = arr_int.astype(np.float64)
#一维数组
arr_float = np.array([[1.1,2.7], [5.7,6.3]])
#浮点型二维数组
将arr_float数组类型转换成arr_int数组类型
arr_temp=arr_float.astype(arr_int.dtype)转化后小数部分被截取

13,创建二维数组矩阵arr(浮点类型) —35
arr = np.array([np.arange(1,5), np.arange(6,10)], dtype=np.float64)

矩阵自乘,二维数组中的每个元素都乘以自身得到一个新的结果

arr1 = arr * arr

矩阵自乘,二维数组中的每个元素都减去自身得到一个新的结果

arr2 = arr - arr

与标量相除,一个标量数字除以二维数组中的每个元素得到一个新的结果

arr3 = 1 / arr

矩阵1/2次幂运算,二维数组中的每个元素计算自身1/2 次幂得到一个新的结果

arr4 = arr ** 0.5

14,数组复制
b = a.view():共用同一个值,
b改变,a也跟着改变
c = a. copy():值不会随着c的值改变而改变

15,np.title(a.(m,n)):扩展
将数组扩展为m行n列
np.sin(数组):取正弦
np.arange(2):2个元素/几到几/几到几,步长
reshape(矩阵,行,列):改变矩阵形状(行列)

16,矩阵.argmax(axis = 0):列中最大值索引
数组.index(对象):求索引
np.sort(matrix,axis=1):横向排序:
np.argsort(a):最小值索引

17,一般情况下,float和int默认64

18,根据索引查值
arr = np.arange(10)
arr[5]:下标(索引)为5的元素
二维数组索引:
二维数组对象[二维数组下标索引值,一维数组下标索引值]
三维:数组对象[三维度轴索引值,二维度下标索引值,一维度元素下标索引值]
所得值为二维数组
19,names=np.array([‘cnm’,’Bob’,’Jane’,’Bob’])
data = np.random.randn(4,3):生成正态分布的一些随机数据的二维数组
4:根据第一行数组的个数决定
print(data[names == ‘Bob’,1:]):取Bob所在行的所有数据
—>|或 &与 and or

20,及时创建副本

21,花式索引:针对二维数组:
print([[行数1,行数2]]):取具体某行

22,np.ix_:可以将两个一维数组转换成一个用于选取正方形区域的索引器

23,arr.T:可以将一个4行3列的二维数组转换成一个3行4列的二维数组

24,arr=np.arange(24).reshape(2,3,4)
(2轴3行4列)
arr.transpose(1,0,2)
(3轴2行4列)

25,arr.swapaxex(1,2):实现三维数组轴对换
相当用于将原三维数组以轴z为轴心,向左推90°

26,针对二维数组
arr.tofile(‘a.bin’):写入数据
print(a.dtype)
b = np.fromfile(‘a.bin’,dtype = a的数据类型):读取数据

27,np.save(‘a.npy’,a):保存数据
np.load(‘a.npy’):读取数据

28,保存数据到一个文件中
np.savez(‘res.npz’,a,b,c):文件名及数组名
np.load(‘res.npz’):读取文件

29,savetext和loadtext可读写一维数组,二维数组,csv文件
np.savetext(‘a.txt’,a,fmt=’%d’,delimiter=’,’):保存为整数,以逗号隔开
np.loadtext(‘a.txt’,delimiter=’,’):读取时以,隔开

30,np.sqrt(arr):计算各元素的平方根
np.exp(arr):计算常量值e各元素值

31,np.maximum(arr1,arr2):对比数组中各元组的大小取大的组成最终数组
arr = np.random.randn(4)*5
np.modf(arr):取数列中的小数部分和整数部分

32,以每个元素为一行,生成N*N的方形二维矩阵
xs,xy = np.meshgrid(arr,arr)
根号下x²+y² :np.sqrt(np.square(xs)) + np.sqrt(np.square(xy))

33,np.where(布尔型,arr1,arr2):
当布尔型为True时,arr1,否则arr2

34,arr.sum(axis = 0):沿轴0(x轴)求和计算
arr.mean(axis = 1):沿y轴求平均值
arr.std()求标准差

35,arr.sort():默认从小到大排序
arr.sort(axis=1):每行排序
np.unique(arr):去重排序
np.inId(arr,[’元素1’,’元素2’]):判断True或False

36,arr1.dot(arr2):矩阵1*矩阵2
np.dot(arr1,np.ones(3)):二维矩阵与一维矩阵点积运算后得到一个一维数组

inv(arr):获取矩阵逆运算

qr(arr):获取矩阵的qr操作值分解

37,arr.cumsum(0):所有元素累计和
arr.cumprod(0):所有元素累计积

38,axis = 1行,0列,z轴

39,标准正态(高斯)分布的4*4数组,arr = np.random(size=(4,4))
40,argmax求临界值

Pandas模块
Series,DataFrame
Series:
obj = series([1,3,2,13]):索引在左,内容在右
obj.index:求索引
obj.values:求值
指定索引:
obj=([1,3,2,7],index=[‘a1’,’a3’,’a13’,’a2’])
obj[‘a3’]:取值
obj[‘a13’]=13:改值
输出指定范围的索引:obj[[‘a1’,’a13’]]
np.exp(obj):e的obj各values值次方
a1 in obj:判断索引值是否在obj中
dict1 = {‘a’:3,’b’:13}
#构建series对象
obj = Series(dict1)
new_index = [‘w,’’y’]
obj2 = Series(dict1,new_index)
pd.isnull/notnull(obj2)::判断是否为空
两个series相加:索引并集:values为NaN,

41,将具有等长的多个列表存入DataFrame,自动发添加索引,列名key值自动排序
fram=DataFrame(dict1,columns=[‘w’,’j’,’y’],index=[1,3,13]):columns列顺序排列,index:索引顺序排列
fram[‘j’]:求某列
fram[‘w’]=7:赋值操作
Series给DataFrame赋值:精确匹配DataFrame索引
字典嵌套,外层key作为列,内层key作为索引处理
reindex:新索引
Method=’ffill’/’bfill’:实现前向/前后插值处理,
ix的标签索引实现行列重置
Pandas进阶:s表示Series对象,
d表示DataFrame对象
s.drop(‘索引名’)
d.drop([‘索引1’,’索引2’],axis=0):删除索引1和3的一栏

add, sub减,mul乘,div除

d1.add(d2,fill_value=0):缺失用0代替,相加

排序:s.sort_index(ascending=True):升序,false降序

d.sort_values(by=’b’,/[‘a’,’b’]):按照列值或多个列值排序

操作文件csv/txt
读取:
os:csvPath = os.getcwd() + ‘文件存储路径’
data = pd.read_csv(csvPath + os.sep + ‘tips.csv’):读取数据

写入:data.to_csv(csvPath = os.sep + ‘out.csv’)

json操作:
设置路径:jsonPath = os.getcwd + ‘路径’
读取:with open(jsonPath + os.sep +’文件名’ , ‘r’,encoding = ‘utf8’) as fp:
dump()写入json数据
data = json.load(fp):读取
Df = DataFrame(data):将json转换为DataFrame对象

Excel:地址同上
xls_file = pa.ExcelFile(ExcelPath + os.sep + ‘文件名’)
读取有效sheet页
table = xls_file.prase(‘文件名无后缀,其他都有’)

读取数据库:
import pymysql
#获取有效的数据库连接引用对象
connection = pymysql.connect(host =’localhost’,post=3306,user=’root’,password=’1’,db=’houserentals’,charser=’utf8’)
#设置查询语句
sql = ‘select *from emp e where e.lessor = 13 ’
#使用read_sql函数 检索并转换DataFrame对象
df = pd.read_sql(sql,connection)
#关闭数据库
conncetion.close()
#测试输出
print(df)

42, pandas模块

#显示完整的列

pd.set_option(‘display.max_columns’, None)

#显示完整的行

pd.set_option(‘display.max_rows’, None)

-------------本文结束感谢您的阅读-------------