LML学习打卡(总)

任务1:Pandas数据读取、保存和数据类型

任务要点:文件读取、保存、数据类型分析

  • 步骤2:将读取的进行保存,表头也需要保存
  • 步骤3:分析每列的类型,取值个数
  • 步骤4:分析每列是否包含缺失值

代码如下

import pandas as pd
doc=pd.read_csv( 'E:\Pokemon.csv')
print(doc)
file=pd.DataFrame(doc)
file2=file.to_csv('csv文件.csv',header=True)
print(file.info())#分析每列的类型,取值个数
null_all=file.isnull().sum()#分析每列缺失值个数
print(null_all)#缺失值个数统计
print(file.isnull())#- 分析每列是否包含缺失值

任务2:Pandas数据位置索引

任务要点:数据选择、数据索引

  • 步骤2:选择出Total列
  • 步骤3:选择出Total列和HP列
  • 步骤4:选择出第10-40行数据
  • 步骤5:选择出第10-40行的Total列和HP列
  • import pandas as pd
    df=pd.read_csv('E:\Pokemon (1).csv')
    file=pd.DataFrame(df)
    file.to_csv('CSV文件2.csv')
    print(df[['Total']])#选择出total列
    print(df[['Total','HP']])#选择出Total列和HP列
    print(file.iloc[10:41,:])#选择出第10-40行数据
    print(file.iloc[10:41,:],[['Total','HP']])#选择出第10-40行的Total列和HP列

  • 任务3:Pandas数据逻辑索引

    任务要点:逻辑索引

  • 步骤1:读取文件https://cdn.coggle.club/Pokemon.csv
  • 步骤2:筛选出Type 1 为 Grass的数据
  • 步骤3:筛选出Type 1 为 Grass的数据 且 Type 2 为 Poison的数据
  • 步骤4:筛选出HP大于50 或 Speed小于90的数据
  • 步骤5:筛选出Type 1 取值为Grass 或 Fire,且 HP 位于 70 与 90之间,且 Speed以数字8开头的数据
  • import pandas as pd
    file=pd.read_csv('E:\Pokemon (2).csv')#读取CSV文件
    df=pd.DataFrame(file)
    df2=df.set_index('Type 1')#设置列索引'Type 1'
    print(df2.loc['Grass'])#再运用loc索引器找出'Grass'
    df3=df2.set_index('Type 2',append=True)#多级索引
    df2_sorted=df3.sort_index()
    print(df2_sorted.loc[('Grass','Poison')])#多级索引下查找
    def condition(x):#筛选出HP大于50 或 Speed小于90的数据
        a=x.HP>50
        b=x.Speed<90
        result=a&b
        return result
    print(df3.loc[condition])
    df4=df.set_index(['Type 1'])
    df5=df4.loc[['Grass','Fire']]
    df4_sorted=df5.sort_index()
    
    def B(x):#筛选出Type 1 取值为Grass 或 Fire,且 HP 位于 70 与 90之间,且 Speed以数字8开头的数据
        a=x.HP>70
        b=x.HP<90
        c=[str(d).startswith('8')for d in df4_sorted.Speed.values]
        result=a&b&c
        return result
    print(df4_sorted.loc[B])

  • 任务4:Pandas数据分组聚合

    任务要点:groupby、agg、transform

  • 步骤1:读取文件https://cdn.coggle.club/Pokemon.csv
  • 步骤2:学习groupby分组聚合的使用
  • 步骤3:学习agg分组聚合的使用
  • 步骤4:学习transform的使用
  • 步骤5:使用groupby、agg、transform,统计数据在Type 1分组下 HP的均值
  • import pandas as pd
    file=pd.read_csv('E:\Pokemon (3).csv')
    print(file)
    file1=file.groupby('Type 1')['HP']
    print(file1.agg({'HP':'mean'}))
    print(file1.transform('mean'))

  • 任务5:Pandas日期数据处理

    任务要点:日期处理

  • 步骤1:创建一列dt,dt取值为从1638263656 到 1638283656 的 unix时间
  • 步骤2:将dt列转为datatime格式
  • 步骤3:筛选出dt列中小时为10的行
  • 步骤4:将dt列整体增加8小时的时间
  • import pandas as pd
    import datetime
    import time
    timestamp_star=1638263656
    timestamp_ends=1638283656
    dt=pd.to_datetime(range(timestamp_star,timestamp_ends),unit='s')#时间戳转换为datetime类型
    print(dt)
    print(dt[dt.hour==10])#筛选出dt列中小时为10的行
    time.sleep(1.05)
    dt=dt+datetime.timedelta(hours=8)#将dt列整体增加8小时的时间
    print(dt)

  • 任务6:Pandas缺失值处理

  • 步骤1:读取文件https://cdn.coggle.club/Pokemon.csv
  • 步骤2:分析每列的缺失值
  • 步骤3:对每列的缺失值进行填空
  • import pandas as pd
    file=pd.read_csv("E:\Pokemon (4).csv")
    df=pd.DataFrame(file)
    print(df.info())#可分析缺失值个数
    df=df.fillna(value=0)#关键赋值
    print(df.isna())#查看
    
    

  • 任务7:Pandas数据可视化

    任务要点:plot

  • 步骤1:读取文件https://cdn.coggle.club/Pokemon.csv
  • 步骤2:统计Type 1分组下HP、Attack、Defense的均值,并进行绘制柱状图
  • 步骤3:将所有样本的HP、Attack绘制散点图
  • import pandas as pd
    import matplotlib as mpl
    #import matplotlib.pyplot as plt
    from matplotlib import pyplot as plt
    plt.rcParams['font.family'] = ['Source Han Sans CN']
    file=pd.read_csv("E:\Pokemon (5).csv")
    df=pd.DataFrame(file)
    mean=df.groupby('Type 1')[['HP','Attack','Defense']].mean()
    #条形图
    mean.plot(kind='bar',title='均值')
    plt.show()
    #散点图
    data=df[['HP','Attack']]
    data.plot(kind='scatter',x='HP',y='Attack')
    plt.show()

    任务8:Pandas多表合并和聚合

  • 任务要点:merge、join

  • 步骤1:创建如下数据
  • 步骤2:Merge data1 and data2 Using Inner Join
  • 步骤3:Merge data1 and data2 Using Outer Join
  • 步骤4:Merge data1 and data2 Using Left Join
  • 步骤5:Merge data1 and data2 Using Right Join
  • 步骤6:Merge data1 ,data2 and data3 Using Outer Join
  • 步骤7:Merge data1 and data2 based on Index

data1 = pd.DataFrame({"ID":range(101, 106),

"x1":range(1, 6),

"x2":["a", "b", "c", "d", "e"],

"x3":range(16, 11, - 1)})

data2 = pd.DataFrame({"ID":range(104, 108),

"y1":["x", "y", "x", "y"],

"y2":range(8, 1, - 2)})

data3 = pd.DataFrame({"ID":range(102, 110),

"z1":range(10, 18),

"z2":["z", "b", "z", "z", "d", "z", "d", "a"],

"z3":range(18, 10, - 1)})

import pandas as pd
data1 = pd.DataFrame({"ID":range(101, 106), 
 "x1":range(1, 6),
 "x2":["a", "b", "c", "d", "e"],
 "x3":range(16, 11, - 1)})
 
data2 = pd.DataFrame({"ID":range(104, 108), 
 "y1":["x", "y", "x", "y"],
 "y2":range(8, 1, - 2)})
 
data3 = pd.DataFrame({"ID":range(102, 110), 
 "z1":range(10, 18),
 "z2":["z", "b", "z", "z", "d", "z", "d", "a"],
 "z3":range(18, 10, - 1)})
print(data1)
print(data2)
print(data3)

#inner内连接
data_inner=data1.merge(data2,how='inner')
#outter外连接
data_outter=data1.merge(data2,how='outer')
#left左连接
data_left=data1.merge(data2,how='left')
#right右连接
data_right=data1.merge(data2,how='right')

data_mult=data1.merge([data2,data3],how='outer')

data_merge=data1.merge(data2,on='ID')


任务9:Pandas透视表和交叉表操作

  • 步骤2:统计Type 1和Type 2分组下HP,Attack,Defense的均值
  • 步骤3:统计Type 1为index,Type 2取值为不同列的情况下,Attack的均值
  • import pandas as pd
    file=pd.read_csv("E:\Pokemon.csv")
    file.groupby(['Type 1','Type 2'])['HP','Attack'].mean()
    file.pivot_table(index='Type 1',columns='Type 2',values='Attack',aggfunc='mean')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值