栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【TL第二期】动手学数据分析-第一章 数据基本操作

【TL第二期】动手学数据分析-第一章 数据基本操作

第一章 第一节 数据载入与初步观察 0 导库

导入pandas、numpy(都是用于数据分析的库)

1 载入数据
  1. 使用相对路径或绝对路径打开文件
  • 相对路径:如果在同一文件夹下,直接访问文件名;如果不在同一级目录下:

    ./:代表目前所在的目录

    ../:代表上一层目录

    以/开头:代表根目录

  • 绝对路径:

    import os
    import  pandas as pd
    os.path.abspath('.')   #表示当前所处的文件夹的绝对路径
    os.path.abspath('..')  #表示当前所处的文件夹上一级文件夹的绝对路径
    data  = pd.read_csv('.dataLJdata.csv')'  #表示当前所处的文件夹里data文件夹里的LJdata.csv文件
    
  1. read_csv 和read_table的区别

    存储效果不同,read_table按行存储,没有分隔(默认使用原始的逗号分隔);read_csv使用制表符进行分隔

  2. 逐块读取

    适合数据条数较多时。

补充:

返回的数据类型:使用read_csv返回Dataframe类型,加入chunksize属性之后返回的是TextFileReader对象。

  • Dataframe类型可以显示,可以使用head()获取头部数据;TextFileReader对象不可以
  • 可以使用get_chunk()函数获取逐块的数据
  1. 将表头改为中文

    # 方法一:逐列修改列名
    df.columns = ['乘客ID','是否幸存',''...]
    #区别于方法二,该方法修改了方法本身
    
    # 方法二:在导入文件时修改
    df = pd.read_csv('train.csv', names=['乘客ID','是否幸存',''...])
    # 多加一行,不修改其数据本身
    
    
2 查看数据基本信息
df.describe()
# 会对每一列数据进行简单的分析:总数、平均数

显示前几行/后几行数据

df.head(10) #显示前10行数据
df.tail(15) #显示前15行数据

判断数据是否为空

# pandas.isnull(object)
df.isnull() #即可显示哪些数据为空

保存数据

df.to_csv('train_chinese.csv')
第二节 pandas基础 1 数据类型Dataframe 和 Series
  • Dataframe :(二维标签数据结构)

    可以用Series生成

    d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
    # 生成字典d, d的第一个key对应第一个Series
    # Dataframe的最终形式类似于一张二维表格
    
  • Series:带标签的一维数组(一维标签数据结构),可以存储整数、浮点数、字符串、python对象等类型的数据。标签统称为索引。

    s = pd.Series(np.random.randn(5), index=['a','b','c','d','e'])
    # 使用numpy生成五个随机数,并带上标签
    
    s1 = pd.Series([1,2,3,4,5], index =['a','b','c','d','e'])
    # 当然也可以自己手动输入数据,并附上标签
    

    Series可以用字典实例化:

    s = pd.Series({'b':1, 'a':0, 'c':2})
    

    python中的字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值对 key=>value 用冒号:分割,每个键值对之间用逗号, 分割,整个字典包括在花括号 {} 中

2 对文件数据的基本操作
  1. 查看Dataframe数据的每一列的名称

    df = pd.read_csv('train.csv')
    df.columns
    

  2. 查看某一列的所有数值

    df['Cabin'].head(3)
    # 或者df.Cabin.head(3),其中Cabin为该列的列名
    
  3. 对比两个文件的列的差别,并删除不相同的列

  4. 隐藏某几列的元素

3 数据筛选
  1. 以"Age"为筛选条件,显示年龄在10岁以下的乘客信息

    df[df["Age"]<10].head(3)
    
  2. 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage

    midage = df[(df["Age"]>10)& (df["Age"]<50)]
    
  3. 将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来

    midage = midage.reset_index(drop=True)
    
  4. 使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

    midage.loc[[100,105,108],['Pclass','Name','Sex']] 
    
  5. 使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

    midage.iloc[[100,105,108],[2,3,4]]
    
第三节 探索性数据分析

利用Pandas对数据进行排序

frame = pd.Dataframe(np.arange(8).reshape((2, 4)), 
                     index=['2', '1'], 
                     columns=['d', 'a', 'b', 'c'])
# 创建Dataframe数据

frame.sort_values(by='c', ascending=True)
# 降序排列

对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序

text.sort_values(by=['票价', '年龄'], ascending=False).head(3)

利用Pandas进行算术计算,计算两个Dataframe数据相加结果

frame1_a = pd.Dataframe(np.arange(9.).reshape(3, 3),
                     columns=['a', 'b', 'c'],
                     index=['one', 'two', 'three'])
frame1_b = pd.Dataframe(np.arange(12.).reshape(4, 3),
                     columns=['a', 'e', 'c'],
                     index=['first', 'one', 'two', 'second'])

frame1_a + frame1_b
# 两个Dataframe相加后,会返回一个新的Dataframe,对应的行和列的值会相加,没有对应的会变成空值NaN

通过泰坦尼克号数据如何计算出在船上最大的家族有多少人

max(text['兄弟姐妹个数'] + text['父母子女个数'])

Pandas describe()

count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662954.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号