“第二课堂“AI实践笔记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]]

                       【思考】对比ilocloc的异同

                                     相同点:
                                           基础功能:无论是 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¥,只有一小部分人享受有较高的票价


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值