Python数据处理分析(三)——分类统计,dataframe复制,
每⼀⾏列数据计算,⼀列。。。
直接上代码了
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
path = "E:/Model_building/A/"
s7 = pd.read_excel(path+"sheet1-7.xlsx")
s1 = pd.read_excel(path+"sheet3.xlsx")
s7 = pd.DataFrame(s7.values)
s1 = pd.DataFrame(s1.values) # 导⼊数据
看⼀下s1和s7,由于是⼀整个建模的题⽬,所以不做太多解释了,知道数据处理的⽅式就好。
上⾯是s7,1到8为8种元素在每⼀种地区的值,下⾯s1为⼋种元素的属性
下⾯需要⽤s1的数据对s7进⾏操作,对于每⼀⾏,进⾏⾏的for循环。为了不影响s7,令⼀个s8=s7需要注意,Python中的赋值为相同地址,所以copy复制⼀下。
s8 = s7.copy() # dataframe 复制需⽤copy函数
for i in range(1,9):
s8.iloc[:, i] /= s1.iloc[i-1, 2] # 每⼀列的每⼀⾏元素进⾏计算
在下⾯计算⼀⾏中每⼀个数据占这⼀⾏总和的⽐值,使⽤两个for循环,⼀个遍历⾏计算和,⼀个遍历这⼀⾏的列计算⽐值
s9 = s8.copy()
for i in range(5):
s = s9.iloc[i, 1:].sum() # 计算每⼀⾏的和
for k in range(1,9):
s9.iloc[i,k] /= s
<_excel(path+"sheet9.xlsx")
下⾯⽤matplotlib的pie()画饼图,⼀共五个图形,遍历五遍
name = ['⽣活区', '⼯业', '⼭区', '交通', '绿地']
for i in range(5):
labels = ['As', 'Cd', 'Cr', 'Cu', 'Hg', 'Ni', 'Pb', 'Zn']
elements = list(s9.iloc[i,1:])
plt.pie(elements, labels=labels, autopct="%3.1f%%" ) # 饼图
plt.title(name[i])
plt.show()
下⾯统计每⼀种地区的采样数,Pg值,以及该值对应的污染程度,形成⼀个⽐较可以看得下去的表格。当然可以使⽤excel或者⼿⼯计算完成,这⾥使⽤Python
l = []
for i in range(5):
p = s8.iloc[i,1:].mean()
m = s8.iloc[i,1:].max()
l.append( np.sqrt((pow(p,2)+pow(m,2))/2) ) # 计算Pg列,即采样点综合污染指数
s1 = pd.read_excel(path+"sheet1.xlsx")
c = s1.groupby('6').count()
c = list(c.iloc[:,0]) # 统计每种地区的采样点个数
newdata = pd.s([5,3]))
newdata.iloc[:,1] = l
for i in range(5):
c[i] = name[i]+"("+str(c[i])+")" # 将采样点名称和个数合并成字符串
newdata.iloc[:,0] = c
for i in range(5): # 按照每种P值的范围,确定等级
a = newdata.iloc[i,1]
if a <= 0.7:
newdata.iloc[i,2] = "安全"python怎么读取excel某一列
elif a <= 1:
newdata.iloc[i,2] = "警戒"
elif a <= 2:
newdata.iloc[i,2] = "轻"
elif a <= 3:
newdata.iloc[i,2] = "中"
else:
newdata.iloc[i,2] = "重"
print(newdata)
最后的结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论