“第二课堂”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]]

 

                       【思考】对比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¥,只有一小部分人享受有较高的票价

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值