数据分析day3

1.pandas库相关介绍

1-1安装pandas

1-2Pandas Series类似表格中一个列(column), 类似于一维数组,可以保存任何数据类型Series由索引(index) 和列组成,函数如下:

pandas.Series(data,index,dtype)

1-3下述代码演示了如何使用Pandas库创建Series对象,并通过索引检索数据

import pandas as pd
#根据列表或者元祖创建
s = pd.Series(['李四','王五','张三']);
print(s)
#根据字典创建
s1 = pd.Series({"name":"李四","age":23});
print(s1)
# 使用索引检索数据
print(s1["name"])

其运行结果如下所示:

1-4数据帧

DataFrame构造方法如下:

pandas .DataFrame (data,index, columns, dtype)

参数说明:

  • data:-组数据(ndarray. series, map, lists, dict等类型)。
  • index: 索引值,或者可以称为行标签。
  • columns:列标签,默认为Rangelndex (O, 1,2, ... n)。
  • dtype:数据类型。

示例:列表创建需要colunms取列名,也可以用字典创建

import pandas as pd
#根据列表或者元祖创建
# s = pd.DataFrame([['李四',23],['王五',12],['张三',13]],columns=["name","age"]);
# 根据字典创建
s = pd.DataFrame({"name":['李四','王五','张三'],"age":[100,101,102]});
print(s)

其运行结果如下所示:

1-5将文件转为csv文件,代码如下所示:

import pandas as pd

data = [['李四', 110], ['王五', 55], ['张三', 88]]
df = pd.DataFrame(data, columns=["name", "age"])
#写入文件,index:False 不写入索引,True 写入索引
# df.to_csv('test.csv', index=False)

df = pd.read_csv('test.csv', usecols=['name'])
print(df)

其运行结果如下所示:

1-6读取某一列代码如下所示:

df = pd.read_csv('test.csv', usecols=['name'])
print(df)

其运行结果如下图所示:

2.pandas相关函数介绍

2-1sum函数

Pandas中的sum()函数用于对DataFrame或Series对象进行求和。它可以对整个对象中的元素或每一列/行进行求和操作

示例:

import pandas as pd

data = [['李四', 23], ['王五', 12], ['张三', 13]]
df = pd.DataFrame(data, columns=["name", "age"])

# 求一列的和
sum = df["age"].sum()
print(sum)

其运行结果如下所示:

2-2mean函数

Pandas中的mean()函数用于计算DataFrame或Series对象的均值。它可以对整个对象中的元素或每一列/行进行求均值操作

示例:

import pandas as pd

data = [['李四', 23], ['王五', 12], ['张三', 13]]
df = pd.DataFrame(data, columns=["name", "age"])

# 求一列的平均数
data = df["age"].mean()
print(data)

其运行结果如下所示:

2-3head和tail函数

head()和tail():分别返回DataFrame的前几行和后几行数据

示例:

import pandas as pd
df = pd.DataFrame(
    {
        "name":['李四','王五','张三','王丽','王华','张丽丽'],
        "age":[22,23,23,22,23,23]
     }
)
print(df)
#返回前3行
print(df.head(3))
#返回后2行
print(df.tail(2))

其运行结果如下所示:

2-4sort_values函数

sort_values():对DataFrame的指定列进行排序

示例:

import pandas as pd
df = pd.DataFrame(
    {
        "name":['李四','王五','张三','王丽','王华','张丽丽'],
        "age":[22,23,23,22,23,23]
     }
)

print("按照列名年龄进行升序")
df1 = df.sort_values(by="age",ascending=False)
print(df1)

其运行结果如下所示:

2-5去重函数

●duplicated()函数可以检测重复项
●drop_ duplicates() 函数可以删除重复项
示例:

import pandas as pd
data = [['李四', 110], ['王五', 55], ['张三', 88],['张三', 88],['李四', 110]];
df = pd.DataFrame(data, columns=["name", "age"]);
iss = df.duplicated()
#检测重复项
print(iss)
#删除重复项
dfs = df.drop_duplicates()
print(dfs)

其运行结果如下所示:

3.Pyechants数据可视化

3-1安装

3-2Bar:柱状图/条形图

其中initopts为初始化配置项,如下图所示:

基础柱状图代码如下所示:

#导入柱状图
from pyecharts.charts import Bar
#导入配置项
from pyecharts import  options as opts

#基础柱状图
def barBase():
    #x数据格式
    x = ["一月","二月","三月","四月","五月","六月"]
    #y轴数据
    y = [15,20,22,23,34,40]
    #创建柱状图对象
    b = Bar()
    #添加x轴数据
    b.add_xaxis(x)
    # 添加y轴数据
    b.add_yaxis("",y)
    # 样式设置
    # b.set_global_opts()  全局设置
    b.set_global_opts(title_opts=opts.TitleOpts(title="统计半年的温度变化"))
    # b.set_series_opts()  系列设置
    b.set_series_opts(itemstyle_opts=opts.ItemStyleOpts(color="red"))
    #生成一个静态页面
    b.render("1-基础柱状图.html")

if  __name__ == "__main__":
    barBase()





其运行结果为:

其中y轴根据数值区间自动生成数值

3-3饼图

基础饼图代码如下所示:

#导入饼图
from pyecharts.charts import Pie
#导入配置项
from pyecharts import  options as opts

#饼图
def pieBase():
    #饼图的数据结构
    data =[("90分以上",5),("80分到90分之间",15),("60分到80分之间",11),("60分一下",2)]
    #创建饼图
    p = Pie()
    #添加数据
    p.add("考试成绩分布",data)
    p.set_global_opts(title_opts=opts.TitleOpts(title="成绩统计"))
    #添加颜色
    p.set_colors(["#B8860B","#458B74","#40E0D0","#FFD700"])
    p.render("3-饼图.html")

其运行结果为:

3-4时间轴

基础时间轴设置代码如下所示:

#导入柱状图和时间轴
from pyecharts.charts import Bar,Timeline,Map,Line,Pie,Grid
#导入配置项
from pyecharts import  options as opts
from pyecharts.globals import ThemeType

#基本时间轴
def timeBase():
    #构建柱状图的时间轴数据
    data=[
        {"x": ["一月","二月","三月"],"y":[10,24,56]},
        {"x": ["一月", "二月", "三月"], "y": [20, 14, 36]},
        {"x": ["一月", "二月", "三月"], "y": [70, 224, 156]}
    ]
    #创建时间轴对象
    t = Timeline()
    year =[2020,2021,2022]
    for i in range(len(year)):
        #创建柱状图
        b =Bar()
        b.add_xaxis(data[i]["x"])
        b.add_yaxis("",data[i]["y"])
        #添加到时间轴
        t.add(b,"{}".format(year[i]))
    #开启自动播放配置
    t.add_schema(is_auto_play=True,play_interval=1000)
    t.render("6-时间轴.html")

    # 地图的三年数据
dataMap = [
        [("四川省", 200), ("云南省", 100), ("贵州省", 300)],
        [("四川省", 500), ("云南省", 200), ("贵州省", 350)],
        [("四川省", 100), ("云南省", 180), ("贵州省", 600)]
    ]

    # 柱状图的三年数据
dataZhu = [
        {"x": ["一月", "二月", "三月"], "y": [10, 24, 56]},
        {"x": ["一月", "二月", "三月"], "y": [20, 14, 36]},
        {"x": ["一月", "二月", "三月"], "y": [70, 224, 156]}
    ]
    # 饼图的三年数据
dataPie = [
        [("90分以上", 5), ("80分到90分之间", 15), ("60分到80分之间", 11), ("60分一下", 2)],
        [("90分以上", 15), ("80分到90分之间", 7), ("60分到80分之间", 44), ("60分一下", 12)],
        [("90分以上", 25), ("80分到90分之间", 12), ("60分到80分之间", 21), ("60分一下", 19)]
    ]
    # 折线图的三年数据
dataLine = [
        {"x": ["一月", "二月", "三月"], "y": [10, 24, 56]},
        {"x": ["一月", "二月", "三月"], "y": [20, 14, 36]},
        {"x": ["一月", "二月", "三月"], "y": [70, 224, 156]}
    ]
year =[2020,2021,2022]

#组合图表
def getYear(i):
    #1 地图
    m = Map()
    m.add("地图",dataMap[i],"china",center=[133,24])
    m.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))


    # 2 柱状图
    b = Bar()
    b.add_xaxis(dataZhu[i]["x"])
    b.add_yaxis("柱状图",dataZhu[i]["y"])
    #设置不显示图例
    b.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
    #饼图
    p = Pie()
    p.add("饼图",dataPie[i],center=["80%","35%"],radius=["","40%"])
    #设置不显示图例
    p.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
    #折线图
    l = Line()
    l.add_xaxis(dataLine[i]["x"])
    l.add_yaxis("折线图", dataLine[i]["y"])
    #设置不显示图例
    l.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))

    g = Grid()
    #设置柱状图为左下角
    g.add(b, grid_opts=opts.GridOpts(pos_top="60%",pos_right="60%"))
    g.add(l, grid_opts=opts.GridOpts(pos_top="60%", pos_left="60%"))
    g.add(p, grid_opts=opts.GridOpts())
    g.add(m, grid_opts=opts.GridOpts())

    return g
def getLine():
    #设置容器的款高度
    t = Timeline(init_opts=opts.InitOpts(width="1600px",height="800px",theme=ThemeType.DARK))
    for i in range(len(year)):
        g = getYear(i)
        t.add(g,time_point=str(year[i]))

    #开启自动播放
    t.add_schema(is_auto_play=True)
    t.render("6-多行时间轴.html")

if __name__ == "__main__":

    getLine()
if __name__ == "__main__":
    timeBase()

其运行结果为:

3-5中国地图

中国地图设置代码如下所示:

其运行结果为:

3-6仪表图

基础仪表图设置代码如下所示:

#导入地图
from pyecharts.charts import Gauge
#导入配置项
from pyecharts import  options as opts

#基本仪表图
def gaugeBase():
    #仪表图数据结构
    data = [("增长率",50),("死亡率",20)]
    #创建仪表图对象
    g = Gauge()
    g.add("统计人口增长",data,min_=10,max_=200,split_number=8)
    g.render("5-仪表图.html")



if __name__ =="__main__":
    gaugeBase()

其运行结果为:

4.将爬取的信息进行可视化案例

将之前爬取的豆瓣网信息放入csv文件,再转为DataFrame对象中,通过pandas分析,最后进行数据可视化,其代码如下所示:

import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
df = pd.read_csv("movie.csv")
# print(df)
df1 = df.sort_values(by="评论人数",ascending=False)
df2 = df1.head(5)
print(df2)

movies_name = df2["电影名"].to_list()
movies_pnum = df2["评论人数"].to_list()


b = Bar()
b.add_xaxis(movies_name)
b.add_yaxis("评论人数排名前五的电影",movies_pnum)
b.render("评论人数排名前五的电影.html")

其运行结果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值