python学习_董付国老师python培训内容3,为大佬打call

本文所有代码思路均为董付国老师所有,其他为笔者整理以及听课笔记(本文可能非全部内容,后面学困了学废了打不动代码了)

pandas结合matplotlib进行数据可视化

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#df=pd.DataFrame(np.random.randn(1000,2),  #1000行2列随机数
#                columns=['B','C']).cumsum()   #创建DataFrame
#df['A']=pd.Series(list(range(len(df))))  #创建索引
#plt.figure()
#df.plot(x='A') #A列作为X轴数据 折线图
#plt.show()
df=pd.DataFrame(np.random.rand(10,4),
                columns=['a','b','c','d'])
#df.plot(kind='bar') #柱状图
#df.plot(kind='barh') #水平柱状图
#df.plot(kind='barh',stacked=True) #水平堆叠柱状图
#plt.show()

例子:模拟转盘抽奖游戏,统计不同奖项的获奖概率

import numpy as np
import pandas as pd
#模拟转盘100000次
data=np.random.ranf(100000)
#奖项等级划分
category=(0.0,0.08,0.3,1.0)
labels=('一等奖','二等奖','三等奖')
#对模拟数据进行划分
result=pd.cut(data,category,labels=labels)
#统计每个奖项的获奖次数
result=pd.value_counts(result)
#查看结果
print(result)

电影导演演员统计每个演员的参演电影数量

import numpy as np
import pandas as pd
df=pd.read_excel('电影导演演员.xlsx') #从excel中提取数据
print(df)

pairs=[]
for i in range(len(df)): #遍历每一行数据
    actors=df.at[i,'演员'].split(',') #获取当前行的演员清单
    for actor in actors:       #遍历每一个演员
        pair=(actor,df.at[i,'电影名称'])
        pairs.append(pair)
pairs=sorted(pairs,key=lambda item:int(item[0][2:]))#按演员编号进行排列
print(pairs)

index=[item[0] for item in pairs]
data=[item[1] for item in pairs]
df1=pd.DataFrame({'演员':index,'电影名称':data})
result=df1.groupby('演员',as_index=False).count() #按演员列进行分组 统计每个演员的参演电影数量
result.columns=['演员','参演电影数量']
print(result)

print(result.nlargest(3,'参演电影数量'))

饭店营业额模拟,自己生成数据

import csv
import random
import datetime
fn='data.csv'
with open(fn,'w',encoding='cp936') as fp:
    wr=csv.writer(fp)   #创建csv写入器
    wr.writerow(['日期','销量'])   #写入表头

    startDate=datetime.date(2021,1,1)
    #生成365个模拟数据,可以根据需要进行调整
    for i in range(365):
        amount=300+i*5+random.randrange(100)
        wr.writerow([str(startDate),amount])
        startDate=startDate+datetime.timedelta(days=1)
import pandas as pd
import matplotlib.pyplot as plt  #画图用的库
plt.rcParams['font.sans-serif']=['simhei'] #设置字体,使得可显示中文
#读取数据,丢弃缺失值
df=pd.read_csv('data.csv',encoding='cp936')
df=df.dropna()
#生成并保存营业额折线图
plt.figure()
df.plot(x='日期')
plt.savefig('first.jpg')
#plt.savefig('first2.jpg',dpi=300)
#按月统计 生成并保存柱状图
plt.figure()
from copy import deepcopy
df1=deepcopy(df)
#df1['moonth']=df1['日期'].map(lambda x:x[:x.rindex('-')])
df1['month']=df1['日期'].str.slice(0,7)#切下来前七个数
df1=df1.groupby(by='month',as_index=False).sum() #按月求和
df1.plot(x='month',kind='bar')
plt.savefig('second.jpg')
#查找涨幅最大的月份,写入文件
df2=df1.drop('month',axis=1).diff() #每一行减上一行
m=df2['销量'].nlargest(1).keys()[0] #求销量最大的那个月对应的行标签
with open('maxMonth.txt','w') as fp:
    fp.write(df1.loc[m,'month'])
#按季度统计,生成并保存饼状图
plt.figure()
one=df1[:3]['销量'].sum()
two=df1[3:6]['销量'].sum()
three=df1[6:9]['销量'].sum()
four=df1[9:12]['销量'].sum()
plt.pie([one,two,three,four],
        labels=['one','two','three','four'])
plt.savefig('third.jpg')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值