Python numpy pandas

import numpy
a=numpy.array([1,2,3,4])
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
print(a.shape)
print(b.shape)

创建了一个一维向量和三行散列的矩阵

注意:这里要求数据是同一结构,shape函数作用:几行几列

取值:

import numpy
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
print(b[:,1])#这里打印矩阵的第二列
print(b[:,0:2])#这里取到第一列和第二列

修改矩阵中的值:

这里把5和7的值改成了10

import numpy
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
b[(b==5)|(b==7)] = 10
print(b)

强转类型:

把int型转为str型

import numpy
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
c = b.astype(str)
print(c)

其他操作:

import numpy
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
print(b.min())#求最小值
print(b.max(axis=1))#按行求最大
print(b.sum(axis=0))#按列求和
import numpy as np
a=np.arange(10).reshape(2,5)
print(a)
'''创建矩阵:
[[0 1 2 3 4]
 [5 6 7 8 9]]
'''
print(a.ndim)#求维度
print(a.shape)#几行几列
print(a.dtype.name)#矩阵数据类型名字
print(a.size)#元素个数

矩阵初始化:

import numpy as np
#矩阵初始化方法:
np.zeros((3,4))#3行4列矩阵初始化为0(默认为float类型)
np.ones((3,4),dtype=np.int32)#3行4列初始化值为1的int类型

创建矩阵:

import numpy as np
np.arange(10,30,5)
#从10到30,每隔5
#array([10, 15, 20, 25])

np.random.random((2,3))
'''
随机创建:2行3列,-1到1之间
注意:必须是两个random
array([[0.20925672, 0.09790786, 0.00158854],
       [0.73711854, 0.83033327, 0.22525092]])
'''
np.linspace(1,3,100)
#从1到3平均地取100个数(float类型)

运算:

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.hstack((a,a)))
print(np.vstack((a,a)))
print(a.T)
print(a+a)
print(a*a)
print(a.dot(a))
print(np.dot(a,a))
print(np.exp(a))
print(np.sqrt(a))
print(a.shape)
print(a.ravel())
'''
不做解释,一目了然
[[1 2 3 1 2 3]
 [4 5 6 4 5 6]
 [7 8 9 7 8 9]]

[[1 2 3]
 [4 5 6]
 [7 8 9]
 [1 2 3]
 [4 5 6]
 [7 8 9]]

[[1 4 7]
 [2 5 8]
 [3 6 9]]
 
[[ 2  4  6]
 [ 8 10 12]
 [14 16 18]]
 
[[ 1  4  9]
 [16 25 36]
 [49 64 81]]
 
[[ 30  36  42]
 [ 66  81  96]
 [102 126 150]]
 
[[ 30  36  42]
 [ 66  81  96]
 [102 126 150]]
 
 [[2.71828183e+00 7.38905610e+00 2.00855369e+01]
 [5.45981500e+01 1.48413159e+02 4.03428793e+02]
 [1.09663316e+03 2.98095799e+03 8.10308393e+03]]
 
[[1.         1.41421356 1.73205081]
 [2.         2.23606798 2.44948974]
 [2.64575131 2.82842712 3.        ]]
 
 (3, 3)
 
 [1 2 3 4 5 6 7 8 9]
'''
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a.argmax(axis=0))
#[2 2 2]列最大索引值
print(a.argmin(axis=1))
#[0 0 0]行最小索引值
import numpy as np
a=np.arange(0,40,10)
print(a)
b=np.tile(a,(3,2))
c=np.tile(a,(2,3))
print(b)
print(c)
'''
[ 0 10 20 30]

[[ 0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30]]
 
 [[ 0 10 20 30  0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30  0 10 20 30]]
'''

排序:

import numpy as np
a=np.array([[1,4,6],[2,9,7],[5,3,8]])
print(a)
'''
[[1 4 6]
 [2 9 7]
 [5 3 8]]
'''
b=np.sort(a,axis=1)#按行排列
print(b)
'''
[[1 4 6]
 [2 7 9]
 [3 5 8]]
'''
c=np.sort(a,axis=0)#按列排列
print(c)
'''
[[1 3 6]
 [2 4 7]
 [5 9 8]]
'''
d=np.argsort(a)#索引值排序
print(d)
'''
[[0 1 2]
 [0 2 1]
 [1 0 2]]
'''

特别注意:

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
c=a.view()
print(c is a)#false(c和a指向内存地址不同)
#复制了a,赋值给c
#如果是c=a,那么c和a是同一个(指向同一个地址)
#print(c is a)地话,就会打印true
c[1,2] = 100
print(a)
'''
[[  1   2   3]
 [  4   5 100]
 [  7   8   9]]
'''
#这里发现修改了c,那么a也被修改了
#c和a虽然地址不同,但是共用一组数据

d=a.copy()
print(d is a)#false
d[1,3] = 100
#这里没有改变a
print(a)

读取txt文件:

import numpy
#第一个参数为路径,第二个参数为分隔符,第三个参数是读取的类型
#最后一个参数意思:是否去掉第一行
a=numpy.genfromtxt("d:/a.txt",delimiter=",",dtype="str",skip_header=1)
print(a)

Pandas用于数据处理:

使用示例:

import pandas
food = pandas.read_csv("d:/a.csv")
#读取csv文件
print(food.dtypes)
#字段类型
print(food.head(4))
#获取前4行(默认为5)
print(food.tail(3))
#获取后3行(默认为5)
print(food.shape)
#几行几列
print(food.columns)
#每一列名字
print(food.loc[1])
#获得第2行数据
print(food["name"])
#获得名字为name地列

1.

import pandas

food = pandas.read_csv("d:/a.csv")
list = food.columns.tolist()
print(list)
# 把所有地列名转换成列表

list1 = []
for c in list:
    if (c.endswith("(mg)")):
        list1.append(c)
a = food[list1]
print(a)
#把以(mg)结尾列加入新的列表,并处理完善

2.排序(默认升序)

import pandas

food = pandas.read_csv("d:/a.csv")
food.sort_values("Calcium_(mg)", inplace=True, ascending=False)
#降序排列,第一个参列名,第三个参数,第三个是否升序,默认为true
print(food["Calcium_(mg)"])

3.

import pandas

man = pandas.read_csv("d:/t.csv")
print(man)
age = man["Age"]
#Age列
age_null = age[pandas.isnull(man["Age"])]
#字段Age为空的行
age_null_len = len(age_null)
#Age为空的总和