zl程序教程

您现在的位置是:首页 >  工具

当前栏目

南大《探索数据的奥秘》课件示例代码笔记07

笔记数据代码 探索 示例 07 奥秘 课件
2023-09-14 09:01:29 时间

Chp5-4
2019 年 12 月 20 日

In [2]: # 看数据在不同组的分布
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
my_data = pd.read_csv("C:\Python\Scripts\my_data\Titanic.csv")
my_plot_data=my_data[['Pclass']].groupby(['Pclass']).size()
print(my_plot_data)
my_plot_data.plot(kind='bar')
Pclass
1 216
2 184
3 491
dtype: int64
Out[2]: <matplotlib.axes._subplots.AxesSubplot at 0x194437b8>

In [3]: # 分组统计
print('表 1. 按仓位等级分组求船费、年龄、同行平辈人数、同行父母和子女人数的均值')
print(my_data[['Fare','Age','SibSp','Parch','Pclass']].groupby(['Pclass']).mean())
print('\n\n表 2. 按仓位等级分组求船费、年龄、同行平辈人数、同行父母和子女人数的标准差')
print(my_data[['Fare','Age','SibSp','Parch','Pclass']].groupby(['Pclass']).std())
表 1. 按仓位等级分组求船费、年龄、同行平辈人数、同行父母和子女人数的均值
Fare Age SibSp Parch
Pclass
1 84.154687 38.233441 0.416667 0.356481
2 20.662183 29.877630 0.402174 0.380435
3 13.675550 25.140620 0.615071 0.393075
表 2. 按仓位等级分组求船费、年龄、同行平辈人数、同行父母和子女人数的标准差
Fare Age SibSp Parch
Pclass
1 78.380373 14.802856 0.611898 0.693997
2 13.417399 14.001077 0.601633 0.690963
3 11.778142 12.495398 1.374883 0.888861

In [4]: # 借助分组、筛选的图形化描述
gender_dst_org=my_data[['Sex']].groupby(['Sex']).size()
print('数据文件中全部非空数据的性别情况')
print(gender_dst_org,'\n')
my_filter=my_data[my_data.Survived==1] #dataframe 的数据筛选
gender_dst_srv=my_filter[['Sex']].groupby(['Sex']).size()
print('数据文件中幸存者的性别情况')
print(gender_dst_srv,'\n')
my_tmp=pd.concat([gender_dst_org,gender_dst_srv],axis=1)
# 数据连接, axis=1 表示增加列
my_plot_data=my_tmp.rename(columns={0:'Total',1:'Survived'}) # 列重命名
print(my_plot_data)
my_plot_data.plot(kind='bar')
数据文件中全部非空数据的性别情况
Sex
female 314
male 577
dtype: int64
数据文件中幸存者的性别情况
Sex
female 233
male 109
dtype: int64
Total Survived
Sex
female 314 233
male 577 109
Out[4]: <matplotlib.axes._subplots.AxesSubplot at 0x17111ac8>

In [73]: import pandas as pd
import numpy as np
my_data=dmy_data = pd.read_csv("C:\Python\Scripts\my_data\iris.csv",header=None,
names=['sepal_length','sepal_width','petal_length',
'petal_width','target'])
#my_data.head(5)
my_set=set(my_data['target']) # 创建一个类别名集合
print(my_set)
my_set_list=list(my_set) #set 不能直接访问其元素,转换成 list 后可以访问
colors=list()
palette={my_set_list[0]:"red",my_set_list[1]:"green",my_set_list[2]:"blue"}
# 字典,给三种类别对应散点图中的三种 marker_color
#print(my_data['target'])
for n,row in enumerate(my_data['target']): # 根据类别为每个样本设置绘图颜色
colors.append(palette[my_data['target'][n]])
#print(colors)
# 对 my_data 中的数值型数据,每两个特征绘制散点图
scatterplot=pd.plotting.scatter_matrix(my_data,alpha=0.3,
figsize=(10,10), diagonal='hist',color=colors,
marker='o',grid=True)
{'setosa', 'virginica', 'versicolor'}