python实训笔记2

1.数据载入及初步观察

1)数据加载
      (1)载入数据
         在conda环境中下载numpy及pandas两个库
        【1】 导入numpy和pandas:
                import numpy as np
                import pandas as py  
        【2】载入数据
                 使用相对路径载入数据     
                 df=pd.read_csv(‘train.csv’)
                 df
                 使用绝对路径载入数据
                 df=pd.read_csv(r’D:\课程\pandas入门\train.csv’)
                 df
         【3】【思考】知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果                                     想让他们效果一样,需要怎么做?了解一下’.tsv’和’.csv’的不同,如何加载这                                     两个数据集?
            pd.read_csv()和pd.read_table()
            不同:函数pd.read_csv()和pd.read_table()的内容相同,只是默认分                  隔符不同。在read_csv()中,定界符为,,在read_table()中,                  定界符为\ t。
            如何做:可以通过指定分隔符来调整。如果要读取csv文件(以逗号分                     隔),使用函数read_csv(),如果要读取tsv文件(以制表符分                   隔),使用函数read_table()也可以。如 果既不是逗号也不是                   制表符, 则可以通过参数(sep或delimiter)设置区分符。                tsv’和’.csv’
            不同:tsv’使用制表符(\t)作为分隔符,而csv’使用逗号(,)。
            如何加载:加载TSV文件 tsv_data = pd.read_csv(‘data.tsv’, sep=’\t’)                    加载CSV文件 csv_data = pd.read_csv(‘data.csv’)
   【4】总结:加载的数据是所有工作的第一步,我们的工作会接触到不同的数据格式(                                         eg:.csv;.tsv;.xlsx),但是加载的方法和思路都是一样的,在以后工作和做项目的                               过程中,遇到之前没有碰到的问题,要多多查资料吗,使用google,了解业务                                 逻 辑,明白输入和输出是什么。
         【5】逐块读取
                  逐块读取是一种数据读取方式,通常在处理非常大的数据集或文件时使用。它指的是                      不 是一次性将整个数据集或文件读入内存中,而是按照特定的块大小或批次大小逐块                      地读取数据。尤其适用于处理大型数据集或资源受限的环境。它可以帮助管理内存使                      用、提高性能、提供灵活性以及实现渐进式计算。
                  代码块:
                  chunker=pd.read_csv(’./train.csv’,chunksize=1000)
                  for i in chunker:
                       print(i)
          【6】将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观                                                                              的 熟悉我们的数据]
                     代码:
                    df=pd.read_csv(‘train.csv’,names=[‘乘客ID’,‘是否幸存’,‘乘客等级’,‘乘客姓名’,‘性别’,‘年                                                                             龄’,‘堂兄弟/妹个数’,‘父母与小孩个数’,‘船票信息’,‘票                                                                             价’,‘客舱’,‘登船港口’],index_col=‘乘客ID’,header=0)
                   df
                【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他                                的方法吗?
                             自定义函数:你可以编写一个自定义函数来处理列名的转换。这个函数可以读                                                       取英文列名,然后根据一定的规则或查找表将其转换为对应的中                                                       文列名。
   (2)初步观察
          【1】查看数据的基本信息
                   使用函数:df.info()
         【2】观察表格前几行的数据和后几行的数据
                   使用函数:df.head()
                                     df.tail()
         【3】判断数据是否为空,为空的地方返回True,其余地方返回False
                  使用函数:df.isnull().head()
                【思考】对于一个数据,还可以从哪些方面来观察?找找答案,这个将对下面的数据分                                析有很大帮助
                             数据清洗:
                             检查并处理缺失值:确定哪些列有缺失值,以及缺失值的比例。
                             处理异常值:识别并处理不合理的或超出预期范围的数据点。
                             数据类型校正:确保所有数据类型都与预期相符。
                            数据完整性:
                             检查数据是否包含了所需的所有信息,是否有遗漏或多余的数据。
                             确认数据的时序性、地域性等信息是否准确无误。
      (3)保存数据​​​​​​¶
                【1】将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv
                          df.to_csv(‘train_chinese.csv’)
2.pandas基础

(1)知道你的数据叫什么
                     【1】pandas中有两个数据类型DateFrame和Series,通过查找简单了解他们
                               sdata = {‘Ohio’: 35000, ‘Texas’: 71000, ‘Oregon’: 16000, ‘Utah’: 5000}
                               example_1 = pd.Series(sdata)
                               example_1 
                               
                               data = {‘state’: [‘Ohio’, ‘Ohio’, ‘Ohio’, ‘Nevada’, ‘Nevada’, ‘Nevada’],
                                           ‘year’: [2000, 2001, 2002, 2001, 2002, 2003],‘pop’: [1.5, 1.7, 3.6, 2.4,                                              2.9, 3.2]}
                               example_2 = pd.DataFrame(data)
                               example_2
                     【2】查看DataFrame数据的每列的名称
                              使用函数:df.columns
                     【3】查看"Cabin"这列的所有值
                              使用函数:df[‘Name’].head()
                                                df.Name.head()
                     【4】有哪些多出的列,然后将多出的列删除
                              使用函数:test1=pd.read_csv(‘test_1.csv’)
                                                test
                                                del test1[‘a’]
                                                test1.head(3)
                           【思考】还有其他的删除多余的列的方式吗?
                                         test1.drop(columns=[‘a’],inplace=True)
                                         test1.head(3)
                       【5】列元素隐藏,只观察其他几个列元素                                                                                                 df.drop([’’],axis=1).head(3)

(2)筛选的逻辑
                       【1】 我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
                                  df[df[‘Age’]<10]
                       【2】 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来
                                  df[(df[‘Age’]>10)&(df[‘Age’]<50)]
                       【3】将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
                                midage.loc[[100],[“Pclass”,“Sex”]]
                      【思考】这个reset_index()函数的作用是什么?
                                    将现有的索引重置,并将其替换为从 0 开始的新整数索引(默认为整数类                                        型),或者将某一列设置为新的索引。
                       【4】使用loc方法将midage的数据中第100,105,108行                                                                          的"Pclass",“Name"和"Sex"的数据显示出来
                                midage.loc[[100,105,108],[“Pclass”,“Name”,“Sex”]]
                        【6】使用iloc方法将midage的数据中第100,105,108行                                                                        的"Pclass”,"Name"和"Sex"的数据显示出来

midage.iloc[[100,105,108],[2,3,4]]
                       【思考】对比iloc和loc的异同
                                     相同点:
                                           基础功能:无论是 iloc 还是 loc,它们都是 pandas 中用于索引和选择                                                               数据的方法。
                                           灵活性和便利性:两者都提供了灵活的索引方式,使得用户可以根据                                                                            不同的需求选择数据。
                                     不同点:
                                           基于的索引类型不同:
                                                iloc:基于整数位置进行索引,即基于行和列的整数位置进行选择。                                                           它不考虑列名或行标签,只关心位置的顺序。
                                                loc:基于标签进行索引,即根据列名或行标签来选择数据。它需要                                                           知道确切的列名或行标签才能进行选择。
                                           使用场景:
                                                iloc:当你需要基于行和列的整数位置来选择数据时,使用 iloc 会                                                             更加方便。例如,当你需要选择前几行或后几列的数据时,或                                                           者当你需要基于特定位置进行数据操作时。
                                                loc:当你需要根据列名或行标签来选择数据时,使用 loc 会更加直                                                          观和方便。例如,当你需要选择某个特定列的数据,或者根据                                                          某些条件(如满足特定条件的行)来选择数据时。
3.探索性数据分析

(1)了解你的数据吗?
                 1)不同的排序方式总结
                        【1】让行索引升序排序
                                 frame.sort_index()
                        【2】让列索引升序排序
                                  frame.sort_index(axis=1)
                        【3】让列索引降序排序
                                  frame.sort_index(axis=1,ascending=False)
                        【4】让任选两列数据同时降序排序
                                 frame.sort_values(by=[‘a’,‘c’],ascending=False)
                        【思考】在泰坦尼克号数据分析中,我们可以分析堂兄弟/妹个数与父母与小孩个                                           数与票价之间的关系或者是否幸存与票价之间的关系进行数据分析
                2)利用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
                             将frame_a和frame_b进行相加
                             frame1_a+frame1_b
                         【#】 两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会                                     相加,没有对应的会变成空值NaN。
                                   当然,DataFrame还有很多算术运算,如减法,除法等
                  3)通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
                        使用函数:max()
                   4)学会使用Pandas describe()函数查看数据基本统计信息
                      调用 describe 函数,观察frame2的数据基本信息
                      count : 样本数据大小
                      mean : 样本数据的平均值
                      std : 样本数据的标准差
                      min : 样本数据的最小值
                      25% : 样本数据25%的时候的值
                      50% : 样本数据50%的时候的值
                      75% : 样本数据75%的时候的值
                      max : 样本数据的最大值
                      frame2.describe()
                    【思考】可以看出大部分人的票价低于50¥,只有一小部分人享受有较高的票价

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值