统计学习一:数据的图表展示

在这里插入图片描述
本周内容总结:
在这里插入图片描述
参加此统计学习小组主要是巩固python语言,故所有笔记都以python代码实现

一、数据预处理

1.数据审核、筛选、排序

表一:

姓名统计学成绩数学成绩英语成绩经济学成绩
张松69688486
王翔91759594
田雨54886778
李华81608664
赵颖75968183
宋媛83726671
袁方75587690
陈风87769277
# 找出统计学成绩等于75的学生
df1 = df[df['统计学成绩'] == 75]
# 找出英语成绩最高的前三名学生
df2 = df.nlargest(3, columns='英语成绩')
# df2 = df.nsmallest(3, columns='英语成绩')  #英语成绩最低的前三名学生
# 找出四门课程成绩都大于70分的学生
df3 = df[(df['统计学成绩'] > 70) & 
         (df['数学成绩'] > 70) & 
         (df['英语成绩'] > 70) & 
         (df['经济学成绩'] > 70)]
# 排序,升序ascending=False,降序ascending=Trued
df4 = df.sort_values(by='统计学成绩', ascending=False)

2.数据透视表

表二:

编号性别家庭所在地区平均月生活费(元)月平均衣物支出(元)买衣物首选因素
1大型城市800200价格
2中小城市600180款式
3大型城市1000300品牌
4中小城市40040价格
5中小城市500150款式
6乡镇地区80080品牌
7中小城市600180品牌
8乡镇地区400120价格
9中小城市1000300款式
10大型城市600180款式
11中小城市500150价格
12乡镇地区30030价格
13乡镇地区50050价格
14中小城市30035价格
15中小城市1000300款式
16大型城市800350款式
17中小城市500150款式
18乡镇地区1000100价格
19中小城市80080价格
20乡镇地区800240品牌
21大型城市50050品牌
22大型城市30030价格
23大型城市500150款式
24中小城市500150价格
25大型城市30030价格
26大型城市400200价格
27中小城市1000300品牌
28中小城市50050款式
29大型城市70070款式
30中小城市50050价格
# 数据透视表,行变量为性别,列变量为家庭所在地区
df1 = df.pivot_table(index='性别', columns='家庭所在地区', values='平均月生活费(元)')

二、品质数据的分类与展示

品质数据:包括分类数据和顺序数据,一般为非数字型数据。分类数据一般为无序数据,顺序数据一般为有序数据。

表三(部分):

顾客性别饮料类型
碳酸饮料
绿茶
矿泉水
矿泉水
碳酸饮料
矿泉水
碳酸饮料
绿茶
果汁
碳酸饮料
矿泉水

1.条形图

频数:df.value_count()

# 频数分布表
data = [(df.loc[:, x].value_counts()) for x in df.columns]
# 条形图
fig = plt.figure()
fig.set(alpha=0.2)  # 设定图表颜色alpha参数
plt.subplot2grid((1, 2), (0, 0))  # 在一张大图里分列几个小图,位置是(0,0)
data1 = df['顾客性别'].value_counts(ascending=True)
data1.plot(kind='bar',           
           title='顾客性别')
print(data1)
plt.xlabel("顾客性别")
plt.ylabel("频数")
plt.subplot2grid((1, 2), (0, 1))
data2 = df['饮料类型'].value_counts(ascending=True)
data2.plot(kind='bar',           
           title='饮料类型')
plt.xlabel("顾客性别")
plt.ylabel("频数")

在这里插入图片描述

注:

条形图:条形图用长条形表示每一个类别,长条形的长度表示类别的频数,宽度表示表示类别。多用于分类数据。

直方图:直方图是一种统计报告图,形式上也是一个个的长条形,但是直方图用长条形的面积表示频数。多用于数值型数据。

2.饼图

# 饼图
# 控制饼图为正圆
plt.axes(aspect='equal')
# plot方法对序列进行绘图
data2.plot(kind='pie',  # 选择图形类型           
		   autopct='%.1f%%',  # 饼图中添加数值标签           
		   radius=1,  # 设置饼图的半径           
		   startangle=180,  # 设置饼图的初始角度           
		   counterclock=False,  # 将饼图的顺序设置为顺时针方向           
		   title='不同类型饮料构成的饼图',  # 为饼图添加标题           
		   wedgeprops={'linewidth': 1.5, 'edgecolor': 'green'},  # 设置饼图内外边界的属性值    			  textprops={'fontsize': 10, 'color': 'black'})  # 设置文本标签的属性值
plt.show()

在这里插入图片描述

三、数值型数据的整理与展示

数值型数据:数字尺度测量的观察值,通常用数值来表现。

表四(部分):

销售量
234
143
187
161
150
228
153
166
154
174
156
203
159
198
160

1.直方图

# 按照固定区间长度绘制频率分布直方图
# bins_interval 区间的长度
# margin        设定的左边和右边空留的大小
def probability_distribution(data, bins_interval=1, margin=1):
    bins = range(min(data), max(data) + bins_interval - 1, bins_interval)
    print(len(bins))
    for i in range(0, len(bins)):
        print(bins[i])
    plt.xlim(min(data) - margin, max(data) + margin)
    plt.title("Probability-distribution")
    plt.xlabel('Interval')
    plt.ylabel('Probability')
    # 频率分布density=True,频次分布density=False
    prob,left,rectangle = plt.hist(x=data, bins=bins, density=False, histtype='bar', color=['r'])
    plt.show()
    
if __name__ == '__main__':
    df = pd.read_excel('data/1_table4.xlsx')
    data = df['销售量'].values
    # print(data)
    probability_distribution(data=data, bins_interval=10, margin=10)

在这里插入图片描述

2.茎叶图

# 茎叶图
def stem(data, n):
    for k,g in groupby(sorted(data),key = lambda x: math.floor(x/n)):
        lst = map(str, [d % n for d in list(g)])
        print(k, '|', ' '.join(lst))

注:此茎叶图有点点问题,待解决。

3.箱线图

# 箱线图
def boxplot(data):
    plt.boxplot(data, labels=['销售量(台)'])
    plt.title('某电脑公司销售量数据的箱线图')
    plt.show()

在这里插入图片描述

4.散点图

散点图:两个变量之间的关系。一个变量放在横轴,另一个变量放在纵轴。

表五:

温度降雨量产量
6252250
8403450
10584500
13685750
141105800
16987500
211208250
# 散点图
# 输入产量与温度数据
rainfall = df['降雨量'].values
production = df['产量'].values
colors = np.random.rand(len(rainfall))  # 颜色数组
plt.scatter(rainfall, production, s=200, c=colors)  # 画散点图,大小为 200
plt.xlabel('降雨量')  # 横坐标轴标题
plt.ylabel('产量')  # 纵坐标轴标题
plt.title('小麦产量与降雨量的散点图')
plt.show()

在这里插入图片描述

5.气泡图

气泡图:三个变量之间的关系。一个变量放在横轴,一个变量放在纵轴,另一个变量用气泡的大小来表示。

# 气泡图
tem = df['温度'].values
size = production
plt.scatter(tem, rainfall, s=production, c=colors, alpha=0.6)  # 画散点图, alpha=0.6 表示不透明度为 0.6
plt.xlabel('温度')  # 横坐标轴标题
plt.ylabel('降雨量')  # 纵坐标轴标题
plt.title('小麦产量与降雨量和温度的气泡图(气泡大小表示产量)')
plt.show()
# 气泡图
tem = df['温度'].values
size = production
plt.scatter(tem, rainfall, s=production, c=colors, alpha=0.6)  # 画散点图, alpha=0.6 表示不透明度为 0.6
plt.xlabel('温度')  # 横坐标轴标题
plt.ylabel('降雨量')  # 纵坐标轴标题
plt.title('小麦产量与降雨量和温度的气泡图(气泡大小表示产量)')
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值