目录

一、numpy库的使用方法

1、利用numpy中的array()创建数组

2、利用numpy中的arange()创建数组

3、随机数组创建

4、查看数组属性

5、数组选取

1、一维数组选取

2、二维数组选取

6、数组重塑及转置

1、一维数组重塑

2、二维数组重塑

3、数组转置

7、数组操作

1、添加数组元素

2、删除数组元素

3、缺失值处理

4、重复值处理

5、数组的拼接及拆分

6、数组运算

二、pandas库的使用方法

1、Series及DataFrame对象使用

1、Series对象

2、DataFrame对象

2、读取查看数据

1、使用pandas读取excel中的数据

2、使用pandas读取csv文件

3、选择性读取数据

3、pandas数据处理

1、数据增删查改

2、缺失值处理

3、处理重复值

4、数据排序

5、装置数据表行列

6、将数据表转换为树形结构

7、数据拼接

8、数据的统计运算

9、数据的分布情况

10、相关系数分析

11、分组数据汇总

12、创建数据透视表


一、numpy库的使用方法

1、利用numpy中的array()创建数组

import numpy as np    #导入库numpy 命名为np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])    #创建多维数组
c = np.array([1, 2, 3, 4])    #创建一维数组
print(a)
print (c)

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

2、利用numpy中的arange()创建数组

import numpy as np
a=np.arange(1,20,4)
b=np.arange(10)
c=np.arange(1,6)
print(a)
print(b)
print(c)

[ 1  5  9 13 17]
[0 1 2 3 4 5 6 7 8 9]
[1 2 3 4 5]

3、随机数组创建

import numpy as np
a=np.random.randn(3)
b=np.random.randn(3,2)
c=np.random.rand(5)
d=np.random.rand(2,3)
e=np.random.randint(1,3,4)
f=np.random.randint(1,5,(2,2))print("a:",a)
print("b:",b)
print("c:",c)
print("d",d)
print("e:",e)
print("f:",f)

a: [-0.08651285 -0.66598846 -1.95221718]
b: [[ 0.80910325  0.27852996]
 [ 1.26057639  0.07053796]
 [ 1.48869689 -1.73556879]]
c: [0.26452326 0.87471068 0.36306038 0.95570711 0.29538408]
d [[0.05603988 0.6907821  0.33998311]
 [0.08633272 0.54519208 0.59673932]]
e: [2 1 1 1]
f: [[1 2]
 [4 1]]

4、查看数组属性

import numpy as np
arr=np.array([[1,2],[3,4],[5,6]])
arr1=arr.astype(float)  #数组类型转换
print(arr.shape)        #数组行列
print(arr.shape[0])     #数组行
print(arr.shape[1])     #数组列
print(arr.size)         #数组元素个数
print(arr.dtype)        #数组类型
print(arr1,arr1.dtype)
print(arr.ndim)         #查看数组维度

(3, 2)
3
2
6
float64
[[1 2 3 4]
 [5 6 7 8]]
int32
3

5、数组选取

1、一维数组选取

import numpy as np
arr=np.array([6,57,18,95,17,1,12])
print(arr[2])
print(arr[-2])
print(arr[2:])
print(arr[:2])
print(arr[1:6:3])
print(arr[::2])
print(arr[:2:])
print(arr[2::])

18
1
[18 95 17  1 12]
[ 6 57]
[57 17]
[ 6 18 17 12]
[ 6 57]
[18 95 17  1 12]

2、二维数组选取

import numpy as np
arr=np.array([[1,2,3,4],[21,31,41,51],[13,14,15,16],[6,7,8,9]])
print(arr[1,2])
print(arr[2])
print(arr[:,3])
print("1、",arr[1:3])
print("2、",arr[2:])
print("3、",arr[:2])
print("4",arr[:,3:])
print("5",arr[:,:2])
print("6",arr[1:3,2:4])

41
[13 14 15 16]
[ 4 51 16  9]
1、 [[21 31 41 51]
 [13 14 15 16]]
2、 [[13 14 15 16]
 [ 6  7  8  9]]
3、 [[ 1  2  3  4]
 [21 31 41 51]]
4 [[ 4]
 [51]
 [16]
 [ 9]]
5 [[ 1  2]
 [21 31]
 [13 14]
 [ 6  7]]
6 [[41 51]
 [15 16]]

6、数组重塑及转置

1、一维数组重塑

import numpy as np
arr=np.array([1,23,4,6,79,8])
a=arr.reshape(2,3)
b=arr.reshape(3,2)
print("a:",a)
print("b:",b)

a: [[ 1 23  4]
 [ 6 79  8]]
b: [[ 1 23]
 [ 4  6]
 [79  8]]

2、二维数组重塑

import numpy as np
arr=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
a=arr.reshape(4,3)
b=arr.reshape(2,6)
c=arr.flatten()
d=arr.ravel()
print("a",a)
print("b",b)
print("c",c)
print("d",d)

a [[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
b [[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]]
c [ 1  2  3  4  5  6  7  8  9 10 11 12]
d [ 1  2  3  4  5  6  7  8  9 10 11 12]

3、数组转置

import numpy as np
arr=np.array([[1,2,4,5],[6,7,8,9,],[12,3,21,11]])
print(arr.T)
print()
print(np.transpose(arr))

[[ 1  6 12]
 [ 2  7  3]
 [ 4  8 21]
 [ 5  9 11]]

[[ 1  6 12]
 [ 2  7  3]
 [ 4  8 21]
 [ 5  9 11]]

7、数组操作

1、添加数组元素

import numpy as np
arr=np.array([[1,2,3],[4,5,6]])
arr1=np.append(arr,[[7,8,0]])
print(arr1)
print()
print(np.append(arr,[[2,3,4]],axis=0))
print()
print(np.append(arr,[[1,2],[3,4]],axis=1))
print()
print(np.insert(arr,1,[3,4,8]))
print()
print(np.insert(arr,1,[7,8],axis=1))
print()
print(np.insert(arr,2,[8,2,3],axis=0))

[1 2 3 4 5 6 7 8 0]

[[1 2 3]
 [4 5 6]
 [2 3 4]]

[[1 2 3 1 2]
 [4 5 6 3 4]]

[1 3 4 8 2 3 4 5 6]

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

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

2、删除数组元素

import numpy as np
arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.delete(arr,3))
print()
print(np.delete(arr,1,axis=0))
print()
print(np.delete(arr,2,axis=1))

[1 2 3 5 6 7 8 9]

[[1 2 3]
 [7 8 9]]

[[1 2]
 [4 5]
 [7 8]]

3、缺失值处理

import numpy as np
arr=np.array([2,3,5,6,7,np.nan,8,9])
print(arr)
arr[np.isnan(arr)]=0
print()
print(arr)

[ 2.  3.  5.  6.  7. nan  8.  9.]

[2. 3. 5. 6. 7. 0. 8. 9.]

4、重复值处理

import numpy as np
arr=np.array([2,3,4,5,6,7,2,3,2,4,5,3,2,5,6,2])
print(np.unique(arr))
arr1,counts=np.unique(arr,return_counts=True)
print(counts)

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

5、数组的拼接及拆分

import numpy as np
arr=np.array([1,2,3,4,6,7,8,5,9,0,8,6])
arr1=np.array([[1,2,3,4],[3,4,7,8]])
arr2=np.array([[5,6,7,8],[8,9,10,12]])
print(np.concatenate((arr1,arr2),axis=0))
print()
print(np.concatenate((arr1,arr2),axis=1))
print()
print(np.hstack((arr1,arr2)))
print()
print(np.vstack((arr1,arr2)))
print()
print(np.hsplit(arr1,2))
print()
print(np.vsplit(arr2,2))
print()
print(np.split(arr,4))
print()
print(np.split(arr,[2,6]))
print()
print(np.split(arr,[2,4,5]))

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

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

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

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

[array([[1, 2],
       [3, 4]]), array([[3, 4],
       [7, 8]])]

[array([[5, 6, 7, 8]]), array([[ 8,  9, 10, 12]])]

[array([1, 2, 3]), array([4, 6, 7]), array([8, 5, 9]), array([0, 8, 6])]

[array([1, 2]), array([3, 4, 6, 7]), array([8, 5, 9, 0, 8, 6])]

[array([1, 2]), array([3, 4]), array([6]), array([7, 8, 5, 9, 0, 8, 6])]

6、数组运算

import numpy as np
arr1=np.array([[1,2,3],[2,3,4]])
arr2=np.array([[5,6,7],[8,9,5]])
print(arr1+arr2)
print()
print(arr1*arr2)
print()
print(arr1+3)
print()
print(arr2*2)
print()
print(arr1.sum(),arr1.sum(axis=0),arr1.sum(axis=1))
print()
print(arr1.mean(),arr1.mean(axis=0),arr1.mean(axis=1))
print()
print(arr1.max(),arr1.max(axis=0),arr1.max(axis=1))

[[ 6  8 10]
 [10 12  9]]

[[ 5 12 21]
 [16 27 20]]

[[4 5 6]
 [5 6 7]]

[[10 12 14]
 [16 18 10]]

15 [3 5 7] [6 9]

2.5 [1.5 2.5 3.5] [2. 3.]

4 [2 3 4] [3 4]

二、pandas库的使用方法

1、Series及DataFrame对象使用

1、Series对象

import pandas as pd
s=pd.Series(['足球','羽毛球','乒乓球','排球'])
s1=pd.Series(['足球','羽毛球','乒乓球','排球'],index=['a1','a2','a3','a4'])
s2=pd.Series({'b1':'足球','b2':'羽毛球','b3':'乒乓球','b4':'排球'})
print(s)
print(s1)
print(s2)

0     足球
1    羽毛球
2    乒乓球
3     排球
dtype: object
a1     足球
a2    羽毛球
a3    乒乓球
a4     排球
dtype: object
b1     足球
b2    羽毛球
b3    乒乓球
b4     排球
dtype: object

2、DataFrame对象

import pandas as pd
df=pd.DataFrame(['苹果',3],['梨子',4])
df1=pd.DataFrame([['苹果',3],['梨子',4]],columns=['水果','单价'],index=['a1','a2'])
df2=pd.DataFrame({'水果':['苹果','梨子'],'单价':[2,3]})
df3=pd.DataFrame({'水果':['苹果','梨子'],'单价':[2,3]},index=['b1','b2'])
print(df)
print(df1)
print(df2)
print(df3)

0
梨子  苹果
4    3
    水果  单价
a1  苹果   3
a2  梨子   4
   水果  单价
0  苹果   2
1  梨子   3
    水果  单价
b1  苹果   2
b2  梨子   3

2、读取查看数据

1、使用pandas读取excel中的数据

import pandas as pd
data1=pd.read_excel('订单表.xlsx',sheet_name=3)        #read_excel(r"文件地址",sheet_name=指定读取第几个位置的sheet)
data2=pd.read_excel('订单表.xlsx',sheet_name=3,header=0)
data3=pd.read_excel('订单表.xlsx',sheet_name=3,header=2)
data4=pd.read_excel('订单表.xlsx',sheet_name=3,header=None)
data5=pd.read_excel('订单表.xlsx',sheet_name=3,index_col=0)
data6=pd.read_excel('订单表.xlsx',sheet_name=3,index_col=2)
data7=pd.read_excel('订单表.xlsx',sheet_name=3,usecols=[3])
data8=pd.read_excel('订单表.xlsx',sheet_name=3,usecols=[1,3])
print("1")
print(data1)
print("2")
print(data2)
print("3")
print(data3)
print("4")
print(data4)
print("5")
print(data5)
print("6")
print(data6)
print("7")
print(data7)
print("8")
print(data8)

1
   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34
2
   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34
3
   d002  马克笔  5盒  300
0  d003  打印机  1台  298
1  d004  点钞机  1台  349
2  d005  复印纸  2箱  100
3  d006  条码纸  6卷   34
4
      0    1   2     3
0  订单编号   产品  数量    金额
1  d001  投影仪  5台  2000
2  d002  马克笔  5盒   300
3  d003  打印机  1台   298
4  d004  点钞机  1台   349
5  d005  复印纸  2箱   100
6  d006  条码纸  6卷    34
5
       产品  数量    金额
订单编号               
d001  投影仪  5台  2000
d002  马克笔  5盒   300
d003  打印机  1台   298
d004  点钞机  1台   349
d005  复印纸  2箱   100
d006  条码纸  6卷    34
6
    订单编号   产品    金额
数量                 
5台  d001  投影仪  2000
5盒  d002  马克笔   300
1台  d003  打印机   298
1台  d004  点钞机   349
2箱  d005  复印纸   100
6卷  d006  条码纸    34
7
     金额
0  2000
1   300
2   298
3   349
4   100
5    34
8
    产品    金额
0  投影仪  2000
1  马克笔   300
2  打印机   298
3  点钞机   349
4  复印纸   100
5  条码纸    34

2、使用pandas读取csv文件

import pandas as pd
data1=pd.read_csv('订单表.csv')
data2=pd.read_csv('订单表.csv',nrows=2)
print(data1)
print(data2)

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34
   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300

3、选择性读取数据

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=3)
data1=pd.read_excel('订单表.xlsx',sheet_name=3,index_col=0)
print(data.head())
print()
print(data.head(2))     #查看前2行
print()
print(data.shape)       #查看行列数
print()
data.info()             #查看数据类型
print()
print(data['金额'].dtype)#查看”金额“的数据类型
data['金额']=data['金额'].astype('float64')
print(data.head(2))
print()
print(data1.loc['d001'])    #读取索引为d001的数据
print()
print(data.iloc[2])         #读取第3行数据
print()
print(data.iloc[1:5])       #读取第2-5行数据
print()
a=data['金额']<200
print(data[a])              #读取金额小于200的数据
print()
print(data['金额'])
print()
print(data.iloc[:,1:4])     #读取2-4列数据
print()
print(data.iloc[:,[0,3]])   #读取第1和第4列数据
print()
print(data1.loc[['d001', 'd005'], ['产品', '金额']])    #读取'd001', 'd005'的产品和金额数据
print()
print(data1.iloc[[2, 4], [0, 2]])                     #读取第3、5行的第一列和第三列数据

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300

(6, 4)

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   订单编号    6 non-null      object
 1   产品      6 non-null      object
 2   数量      6 non-null      object
 3   金额      6 non-null      int64 
dtypes: int64(1), object(3)
memory usage: 320.0+ bytes

int64
   订单编号   产品  数量      金额
0  d001  投影仪  5台  2000.0
1  d002  马克笔  5盒   300.0

产品     投影仪
数量      5台
金额    2000
Name: d001, dtype: object

订单编号     d003
产品        打印机
数量         1台
金额      298.0
Name: 2, dtype: object

订单编号   产品  数量     金额
1  d002  马克笔  5盒  300.0
2  d003  打印机  1台  298.0
3  d004  点钞机  1台  349.0
4  d005  复印纸  2箱  100.0

订单编号   产品  数量     金额
4  d005  复印纸  2箱  100.0
5  d006  条码纸  6卷   34.0

0    2000.0
1     300.0
2     298.0
3     349.0
4     100.0
5      34.0
Name: 金额, dtype: float64

产品  数量      金额
0  投影仪  5台  2000.0
1  马克笔  5盒   300.0
2  打印机  1台   298.0
3  点钞机  1台   349.0
4  复印纸  2箱   100.0
5  条码纸  6卷    34.0

订单编号      金额
0  d001  2000.0
1  d002   300.0
2  d003   298.0
3  d004   349.0
4  d005   100.0
5  d006    34.0

产品    金额
订单编号           
d001  投影仪  2000
d005  复印纸   100

产品   金额
订单编号          
d003  打印机  298
d005  复印纸  100

3、pandas数据处理

1、数据增删查改

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=3)
dataes=pd.read_excel('订单表.xlsx',sheet_name=3,index_col=0)
data=data.head(3)
datas=data
print(data)
print('1')
data1 =data.isin(['d002','马克笔'])    #查找'd002','马克笔'所在的位置
print(data1)
print('2')
data2 = data['产品'].isin(['马克笔'])   #查找产品中的马克笔
print(data2)
print('3')
data.replace('马克笔', '钢笔', inplace=True)   #更改表中数据马克笔为钢笔
print(data)
print('4')
data.replace(['投影仪', '打印机'], '电子设备', inplace=True)      #更改表中数据钢笔投影仪, 打印机为电子设备
print(data)
print('5')
datas.replace({'钢笔':'毛笔', 300:98, 298:188},inplace=True)    #更改表中数据钢笔为毛笔,300为98,298为188
print(datas)
print('6')
datas['报废年限']=[10,10,5]                                     #增加一列报废年限数据
print(datas)
print('7')
datas.insert(2,'保险期限',[1,1,3])                              #插入保险期限到第三列
print(datas)
print('8')
d1=datas.drop(['产品'],axis=1)        #删除产品列
print(d1)
print('9')
d2=datas.drop(datas.columns[[2, 5]],axis=1)         #删除第三和第五列
print(d2)
print('10')
d3=datas.drop(columns=['数量'])           #删除数量列
print(d3)
print('11')
print(dataes,'\n12')
e1=dataes.drop(['d001', 'd004','d002'], axis=0)     #删除'd001', 'd004','d002'行
print(e1,'\n13')
e2=dataes.drop(dataes.index[[2,4]],axis=0)          #删除第3和第5行
print(e2,'\n14')
e3=dataes.drop(index=['d002','d004'])               #删除d002、d004行
print(e3)

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
1
    订单编号     产品     数量     金额
0  False  False  False  False
1   True   True  False  False
2  False  False  False  False
2
0    False
1     True
2    False
Name: 产品, dtype: bool
3
   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002   钢笔  5盒   300
2  d003  打印机  1台   298
4
   订单编号    产品  数量    金额
0  d001  电子设备  5台  2000
1  d002    钢笔  5盒   300
2  d003  电子设备  1台   298
5
   订单编号    产品  数量    金额
0  d001  电子设备  5台  2000
1  d002    毛笔  5盒    98
2  d003  电子设备  1台   188
6
   订单编号    产品  数量    金额  报废年限
0  d001  电子设备  5台  2000    10
1  d002    毛笔  5盒    98    10
2  d003  电子设备  1台   188     5
7
   订单编号    产品  保险期限  数量    金额  报废年限
0  d001  电子设备     1  5台  2000    10
1  d002    毛笔     1  5盒    98    10
2  d003  电子设备     3  1台   188     5
8
   订单编号  保险期限  数量    金额  报废年限
0  d001     1  5台  2000    10
1  d002     1  5盒    98    10
2  d003     3  1台   188     5
9
   订单编号    产品  数量    金额
0  d001  电子设备  5台  2000
1  d002    毛笔  5盒    98
2  d003  电子设备  1台   188
10
   订单编号    产品  保险期限    金额  报废年限
0  d001  电子设备     1  2000    10
1  d002    毛笔     1    98    10
2  d003  电子设备     3   188     5
11
       产品  数量    金额
订单编号               
d001  投影仪  5台  2000
d002  马克笔  5盒   300
d003  打印机  1台   298
d004  点钞机  1台   349
d005  复印纸  2箱   100
d006  条码纸  6卷    34 
12
       产品  数量   金额
订单编号              
d003  打印机  1台  298
d005  复印纸  2箱  100
d006  条码纸  6卷   34 
13
       产品  数量    金额
订单编号               
d001  投影仪  5台  2000
d002  马克笔  5盒   300
d004  点钞机  1台   349
d006  条码纸  6卷    34 
14
       产品  数量    金额
订单编号               
d001  投影仪  5台  2000
d003  打印机  1台   298
d005  复印纸  2箱   100
d006  条码纸  6卷    34

2、缺失值处理

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=2)
print(data,'\n')
data.info()         #每一列的缺失值情况
print()
a=data.isnull()     #判断是否为缺失值
print(a,'\n')
b=data.dropna()     #删除有缺失值的行
print(b,'\n')
c=data.dropna(how='all')        #删除全部为缺失值的行
print(c,'\n')
d=data.fillna(0)    #用0填充所有缺失值
print(d,'\n')
e=data.fillna({'金额':16})    #用16填充金额列的缺失值
print(e)

订单编号     产品   数量     金额
0  c001   超市货架   5个  400.0
1  c002     胶带   8卷   60.0
2  c003    复印纸   4箱  360.0
3  c004    封口机   2个    NaN
4  c005    条码纸   6卷   34.0
5  c006  条码打印机   1台    NaN
6  c007    包装盒  50个  120.0
7  c008    交换机   2台   50.0

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8 entries, 0 to 7
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   订单编号    8 non-null      object 
 1   产品      8 non-null      object 
 2   数量      8 non-null      object 
 3   金额      6 non-null      float64
dtypes: float64(1), object(3)
memory usage: 384.0+ bytes

订单编号     产品     数量     金额
0  False  False  False  False
1  False  False  False  False
2  False  False  False  False
3  False  False  False   True
4  False  False  False  False
5  False  False  False   True
6  False  False  False  False
7  False  False  False  False

订单编号    产品   数量     金额
0  c001  超市货架   5个  400.0
1  c002    胶带   8卷   60.0
2  c003   复印纸   4箱  360.0
4  c005   条码纸   6卷   34.0
6  c007   包装盒  50个  120.0
7  c008   交换机   2台   50.0

订单编号     产品   数量     金额
0  c001   超市货架   5个  400.0
1  c002     胶带   8卷   60.0
2  c003    复印纸   4箱  360.0
3  c004    封口机   2个    NaN
4  c005    条码纸   6卷   34.0
5  c006  条码打印机   1台    NaN
6  c007    包装盒  50个  120.0
7  c008    交换机   2台   50.0

订单编号     产品   数量     金额
0  c001   超市货架   5个  400.0
1  c002     胶带   8卷   60.0
2  c003    复印纸   4箱  360.0
3  c004    封口机   2个    0.0
4  c005    条码纸   6卷   34.0
5  c006  条码打印机   1台    0.0
6  c007    包装盒  50个  120.0
7  c008    交换机   2台   50.0

3、处理重复值

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=2)
print(data,'\n')
a=data.drop_duplicates()        #删除相同的行
print(a,'\n')
b=data.drop_duplicates(subset='产品')     #删除产品名重复的行
print(b,'\n')
c=data.drop_duplicates(subset='产品',keep='first')    #删除产品名相同的行 ,保留第一次出现的行
print(c,'\n')
d=c=data.drop_duplicates(subset='产品',keep='last')   #删除产品名相同的行 ,保留最后出现的行
print(d,'\n')
e=c=data.drop_duplicates(subset='产品',keep=False)    #删除所有产品名重复的行
print(e)

订单编号    产品  数量     金额
0  c001  超市货架  5个  400.0
1  c002    胶带  8卷   60.0
2  c003   复印纸  4箱  360.0
3  c004   封口机  2个    NaN
4  c005   条码纸  6卷   34.0
5  c001  超市货架  5个  400.0
6  c002    胶带  8卷  999.0
7  c003   复印纸  4箱   36.0

订单编号    产品  数量     金额
0  c001  超市货架  5个  400.0
1  c002    胶带  8卷   60.0
2  c003   复印纸  4箱  360.0
3  c004   封口机  2个    NaN
4  c005   条码纸  6卷   34.0
6  c002    胶带  8卷  999.0
7  c003   复印纸  4箱   36.0

订单编号    产品  数量     金额
0  c001  超市货架  5个  400.0
1  c002    胶带  8卷   60.0
2  c003   复印纸  4箱  360.0
3  c004   封口机  2个    NaN
4  c005   条码纸  6卷   34.0

订单编号    产品  数量     金额
0  c001  超市货架  5个  400.0
1  c002    胶带  8卷   60.0
2  c003   复印纸  4箱  360.0
3  c004   封口机  2个    NaN
4  c005   条码纸  6卷   34.0

订单编号    产品  数量     金额
3  c004   封口机  2个    NaN
4  c005   条码纸  6卷   34.0
5  c001  超市货架  5个  400.0
6  c002    胶带  8卷  999.0
7  c003   复印纸  4箱   36.0

订单编号   产品  数量    金额
3  c004  封口机  2个   NaN
4  c005  条码纸  6卷  34.0

4、数据排序

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=3)
print(data,'\n')
a=data.sort_values(by='金额',ascending=True)      #按金额从小到大排序
print(a,'\n')
b=data.sort_values(by='金额',ascending=False)     #按金额从大到小排序
print(b,'\n')
c=data['金额'].rank(method = 'average',ascending=False)   #method设置为'average',表示在数据有重复值时,返回重复值的平均排名;
print(c,'\n')
d=data['金额'].rank(method = 'first',ascending=False)     #method设置为'first',则表示在数据有重复值时,越先出现的数据排名越靠前
print(d)

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

订单编号   产品  数量    金额
5  d006  条码纸  6卷    34
4  d005  复印纸  2箱   100
2  d003  打印机  1台   298
1  d002  马克笔  5盒   300
3  d004  点钞机  1台   349
0  d001  投影仪  5台  2000

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
3  d004  点钞机  1台   349
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

0    1.0
1    3.0
2    4.0
3    2.0
4    5.0
5    6.0
Name: 金额, dtype: float64

0    1.0
1    3.0
2    4.0
3    2.0
4    5.0
5    6.0
Name: 金额, dtype: float64

5、装置数据表行列

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=3)
print(data,'\n')
a=data.T
print(a)

0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

0     1     2     3     4     5
订单编号  d001  d002  d003  d004  d005  d006
产品     投影仪   马克笔   打印机   点钞机   复印纸   条码纸
数量      5台    5盒    1台    1台    2箱    6卷
金额    2000   300   298   349   100    34

6、将数据表转换为树形结构

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=3)
print(data,'\n')
a=data.stack()
print(a)

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

0  订单编号    d001
   产品       投影仪
   数量        5台
   金额      2000
1  订单编号    d002
   产品       马克笔
   数量        5盒
   金额       300
2  订单编号    d003
   产品       打印机
   数量        1台
   金额       298
3  订单编号    d004
   产品       点钞机
   数量        1台
   金额       349
4  订单编号    d005
   产品       复印纸
   数量        2箱
   金额       100
5  订单编号    d006
   产品       条码纸
   数量        6卷
   金额        34
dtype: object

7、数据拼接

import pandas as pd
data1=pd.read_excel('订单表.xlsx',sheet_name=3)
data2=pd.read_excel('订单表.xlsx',sheet_name=4)
print(data1,'\n')
print(data2,'\n')
a=pd.merge(data1,data2)
print(a,'\n')
b=pd.merge(data1,data2,how='outer')
print(b,'\n')
c=pd.merge(data1,data2,on='产品')
print(c,'\n')
d=pd.concat([data1,data2])
print(d,'\n')
e=pd.concat([data1,data2],ignore_index=True)
print(e,'\n')
f=data1.append(data2)
print(f,'\n')
g=data1.append({'订单表':'d008','产品':'超市货架','数量':'8个','金额':'640'},ignore_index=True)

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

订单编号    产品   数量   金额
0  e001   点钞机   1台  349
1  e002   复印纸   2箱  100
2  e003    展板   2个  150
3  e004   培训椅   5个  345
4  e005   文件柜   2个  150
5  e006   广告牌   4个  269
6  e007  办公沙发   2个  560
7  e008   包装盒  50个  120
8  e009   交换机   2台   50

Empty DataFrame
Columns: [订单编号, 产品, 数量, 金额]
Index: []

订单编号    产品   数量    金额
0   d001   投影仪   5台  2000
1   d002   马克笔   5盒   300
2   d003   打印机   1台   298
3   d004   点钞机   1台   349
4   d005   复印纸   2箱   100
5   d006   条码纸   6卷    34
6   e001   点钞机   1台   349
7   e002   复印纸   2箱   100
8   e003    展板   2个   150
9   e004   培训椅   5个   345
10  e005   文件柜   2个   150
11  e006   广告牌   4个   269
12  e007  办公沙发   2个   560
13  e008   包装盒  50个   120
14  e009   交换机   2台    50

订单编号_x   产品 数量_x  金额_x 订单编号_y 数量_y  金额_y
0   d004  点钞机   1台   349   e001   1台   349
1   d005  复印纸   2箱   100   e002   2箱   100

订单编号    产品   数量    金额
0  d001   投影仪   5台  2000
1  d002   马克笔   5盒   300
2  d003   打印机   1台   298
3  d004   点钞机   1台   349
4  d005   复印纸   2箱   100
5  d006   条码纸   6卷    34
0  e001   点钞机   1台   349
1  e002   复印纸   2箱   100
2  e003    展板   2个   150
3  e004   培训椅   5个   345
4  e005   文件柜   2个   150
5  e006   广告牌   4个   269
6  e007  办公沙发   2个   560
7  e008   包装盒  50个   120
8  e009   交换机   2台    50

订单编号    产品   数量    金额
0   d001   投影仪   5台  2000
1   d002   马克笔   5盒   300
2   d003   打印机   1台   298
3   d004   点钞机   1台   349
4   d005   复印纸   2箱   100
5   d006   条码纸   6卷    34
6   e001   点钞机   1台   349
7   e002   复印纸   2箱   100
8   e003    展板   2个   150
9   e004   培训椅   5个   345
10  e005   文件柜   2个   150
11  e006   广告牌   4个   269
12  e007  办公沙发   2个   560
13  e008   包装盒  50个   120
14  e009   交换机   2台    50

订单编号    产品   数量    金额
0  d001   投影仪   5台  2000
1  d002   马克笔   5盒   300
2  d003   打印机   1台   298
3  d004   点钞机   1台   349
4  d005   复印纸   2箱   100
5  d006   条码纸   6卷    34
0  e001   点钞机   1台   349
1  e002   复印纸   2箱   100
2  e003    展板   2个   150
3  e004   培训椅   5个   345
4  e005   文件柜   2个   150
5  e006   广告牌   4个   269
6  e007  办公沙发   2个   560
7  e008   包装盒  50个   120
8  e009   交换机   2台    50

8、数据的统计运算

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=4)
a=data.sum()                #求各列数据之和
print(a,'\n')
b=data['金额'].sum()         #求金额的和
print(b,'\n')
c=data.mean()               #求各列数据的平均值
print(c,'\n')
d=data['金额'].mean()        #求金额的平均值
print(d,'\n')
e=data.max()                #求各列数据的最大值
print(e,'\n')
f=data['金额'].max()         #求金额的最大值
print(f)

订单编号    e001e002e003e004e005e006e007e008e009
产品               点钞机复印纸展板培训椅文件柜广告牌办公沙发包装盒交换机
数量                       1台2箱2个5个2个4个2个50个2台
金额                                      2093
dtype: object

2093

金额    232.555556
dtype: float64

232.55555555555554

订单编号    e009
产品       点钞机
数量        5个
金额       560
dtype: object

560

报错:

数据的统计运算.py:7: FutureWarning: Dropping of nuisance columns in DataFrame reductions (with 'numeric_only=None') is deprecated; in a future version this will raise TypeError.  Select only valid columns before calling the reduction.
  c=data.mean()               #求各列数据的平均值

9、数据的分布情况

import pandas as pd
data=pd.read_excel('订单表.xlsx',sheet_name=3)
print(data,'\n')
a=data.describe()              #获取全部数据的分布情况
print(a,'\n')
b=data['金额'].describe()       #获取金额数据分分布情况
print(b)

订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34

金额
count     6.000000
mean    513.500000
std     738.873128
min      34.000000
25%     149.500000
50%     299.000000
75%     336.750000
max    2000.000000

count       6.000000
mean      513.500000
std       738.873128
min        34.000000
25%       149.500000
50%       299.000000
75%       336.750000
max      2000.000000
Name: 金额, dtype: float64

10、相关系数分析

import pandas as pd
data = pd.read_excel('相关性分析.xlsx')
print(data,'\n')
a = data.corr()
print(a,'\n')
b = data.corr()['年销售额(万元)']
print(b)

代理商编号  年销售额(万元)  年广告费投入额(万元)  成本费用(万元)  管理费用(万元)
0  A-001      20.5         15.6      2.00      0.80
1  A-003      24.5         16.7      2.54      0.94
2  B-002      31.8         20.4      2.96      0.88
3  B-006      34.9         22.6      3.02      0.79
4  B-008      39.4         25.7      3.14      0.84
5  C-003      44.5         28.8      4.00      0.80
6  C-004      49.6         32.1      6.84      0.85
7  C-007      54.8         35.9      5.60      0.91
8  D-006      58.5         38.7      6.45      0.90

年销售额(万元)  年广告费投入额(万元)  成本费用(万元)  管理费用(万元)
年销售额(万元)     1.000000     0.996275  0.914428  0.218317
年广告费投入额(万元)  0.996275     1.000000  0.918404  0.223187
成本费用(万元)     0.914428     0.918404  1.000000  0.284286
管理费用(万元)     0.218317     0.223187  0.284286  1.000000

年销售额(万元)       1.000000
年广告费投入额(万元)    0.996275
成本费用(万元)       0.914428
管理费用(万元)       0.218317
Name: 年销售额(万元), dtype: float64

11、分组数据汇总

import pandas as pd
data = pd.read_excel('产品统计表.xlsx')
print(data,'\n1')
a = data.groupby('产品')
print(a,'\n2')
b = data.groupby('产品').sum()
print(b,'\n3')
c = data.groupby('产品')['利润(元)'].sum()
print(c,'\n')

编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
0  a001   背包        16        65     60    960   3900   2940
1  a002   钱包        90       187     50   4500   9350   4850
2  a003   背包        16        65     23    368   1495   1127
3  a004  手提包        36       147     26    936   3822   2886
4  a005   钱包        90       187     78   7020  14586   7566
5  a006  单肩包        58       124     63   3654   7812   4158
6  a007  单肩包        58       124     58   3364   7192   3828 
1
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000234EBA4EF10> 
2
     成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
产品                                                 
单肩包       116       248    121   7018  15004   7986
手提包        36       147     26    936   3822   2886
背包         32       130     83   1328   5395   4067
钱包        180       374    128  11520  23936  12416 
3
产品
单肩包     7986
手提包     2886
背包      4067
钱包     12416
Name: 利润(元), dtype: int64

12、创建数据透视表

import pandas as pd
data = pd.read_excel('产品统计表.xlsx')
print(data,'\n1:')
a = pd.pivot_table(data, values = '利润(元)', index = '产品', aggfunc = 'sum')
print(a,'\n2:')
b = pd.pivot_table(data, values = ['利润(元)', '成本(元)'], index = '产品', aggfunc = 'sum')
print(b)

编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
0  a001   背包        16        65     60    960   3900   2940
1  a002   钱包        90       187     50   4500   9350   4850
2  a003   背包        16        65     23    368   1495   1127
3  a004  手提包        36       147     26    936   3822   2886
4  a005   钱包        90       187     78   7020  14586   7566
5  a006  单肩包        58       124     63   3654   7812   4158
6  a007  单肩包        58       124     58   3364   7192   3828 
1:
     利润(元)
产品        
单肩包   7986
手提包   2886
背包    4067
钱包   12416 
2:
     利润(元)  成本(元)
产品               
单肩包   7986   7018
手提包   2886    936
背包    4067   1328
钱包   12416  11520

python笔记—>数据分析相关推荐

  1. 学完可以解决90%以上的数据分析问题-利用python进行数据分析第二版(代码和中文笔记)...

    <利用python进行数据分析>是数据分析的基础教程,绝大部分数据分析师的入门教材,目前已经升级到第二版.本站搜集了教材的第二版原版代码进行中文翻译和注释,并做了一定的笔记.基本上只需要看 ...

  2. 利用Python进行数据分析_Wes McKinney著_唐学韬译_笔记

    因本人刚开始写博客,学识经验有限,如有不正之处望读者指正,不胜感激:也望借此平台留下学习笔记以温故而知新.这篇主要是利用Python进行数据分析的学习笔记. 利用Python进行数据分析 百度网盘链接 ...

  3. 学习笔记-使用python进行数据分析

    最近在学习利用python进行数据分析,这些博客算是笔记吧,和大家分享分享,欢迎各路大佬前来指导 学习所用书籍:<python数据分析入门从数据获取到可视化>还有<利用python进 ...

  4. 利用python进行数据分析 笔记_利用python进行数据分析(O#039;Relly)学习笔记-一团网...

    利用python进行数据分析(O'Relly)学习笔记 1.第一个bug import pandas plot(arrange(10)) #报错name 'plot' is not defined. ...

  5. 《利用Python进行数据分析》学习笔记ch02-1(1)

    前言 這是我第一次开通博客,主要目的是想记录下自己学习python的过程,同时也是想作为学习笔记,我会把<利用python进行数据分析>这本树上的每个例子都自己敲一边,很多语句并不知道为什 ...

  6. Python预测 数据分析与算法 学习笔记(特征工程、时间序列)

    微信公众号:数学建模与人工智能 GitHub - QInzhengk/Math-Model-and-Machine-Learning 第3章 探索规律 3.1 相关分析 相关关系是一种与函数关系相区别 ...

  7. 利用python进行数据分析 笔记_利用python进行数据分析--(阅读笔记一)

    原博文 2016-06-17 23:21 − 以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频 ...

  8. 利用Python进行数据分析笔记-pandas建模(statsmodels篇)

    跟着教程学习了一段时间数据分析,越学感觉坑越多.于是花了一个星期仔细看了下<利用Python进行数据分析>.写在这里主要是记录下,方便自己查看. statsmodels简介 statsmo ...

  9. 用python进行数据分析举例说明_《利用python进行数据分析》读书笔记 --第一、二章 准备与例子...

    第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得会用才行,这是码这本书的原因.首先按照书上说的进行安装,google下载了epd_free-7. ...

  10. Python学习笔记——数据分析之工作环境准备及数据分析建模理论基础

    目录 <Linkedln:2016年中国互联网最热职位人才库报告> Python3.x 常用的新特性 字符串编码格式回顾: DIKW 体系 数据建模基础 <Linkedln:2016 ...

最新文章

  1. python软件开发-哪个开发软件可以写python啊,VS可以么?
  2. AtCoder Regular Contest 067 F - Yakiniku Restaurants
  3. 2020.5.27 线性规划测试(Lingo实现)
  4. 【Python科学计算系列】矩阵
  5. java开发第一天上班_从第一天开始,如何成为一名优秀的团队合作伙伴,成为初级开发人员
  6. Datawhale-零基础入门NLP-新闻文本分类Task01
  7. 使用sun misc Unsafe及反射对内存进行内省 introspection
  8. 使用Tslib在触摸屏上显示汉字
  9. Google 杀死了 160 个产品!
  10. 突发:Maze 勒索团伙公开 LG 和 Xerox 的内部数据,达数十GB
  11. AVFoundation总结
  12. WinPhone 开发(2)-----应用程序栏ApplicationBar
  13. Atitit mtp ptp rndis midi协议的不同区别
  14. 进阶 | 产品失效模式与效益分析(DFMEA)的实际应用
  15. safari html5插件安装,Safari巧用小插件 体验不输第三方浏览器
  16. 软件构造Lab6总结
  17. HBase如何快速查询
  18. Java中的equals()方法
  19. 主题模型简介(topic model)
  20. 计算机电脑蓝屏原因,如何解决计算机蓝屏?计算机蓝屏的几种常见原因和解决方案...

热门文章

  1. 机器学习:基于Apriori算法对中医病症辩证关联规则分析
  2. Writing a Winsock 2 Layered Service Provider
  3. 中国尼龙剪线市场趋势报告、技术动态创新及市场预测
  4. Magento2 在安装或升级时易发生的状况
  5. ubuntu20.04下CLion2020.1.3安装配置ROS过程说明
  6. ICML/ICLR‘22 推荐系统论文梳理
  7. 【强化学习论文合集】二十二.2020国际机器学习大会论文(ICML2020)
  8. 什么是HOOKED上瘾模型?如何用其提升用户活跃和粘性?
  9. PowerBasic版上海期货交易接口技术文档
  10. 用对象存储云原生内容安全服务,放心!