怎么利用pandas做数据分析

2024-05-15

1. 怎么利用pandas做数据分析

Pandas是Python下一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作。
1. 基本使用:创建DataFrame. DataFrame是一张二维的表,大家可以把它想象成一张Excel表单或者Sql表。Excel 2007及其以后的版本的最大行数是1048576,最大列数是16384,超过这个规模的数据Excel就会弹出个框框“此文本包含多行文本,无法放置在一个工作表中”。Pandas处理上千万的数据是易如反掌的sh事情,同时随后我们也将看到它比SQL有更强的表达能力,可以做很多复杂的操作,要写的code也更少。
说了一大堆它的好处,要实际感触还得动手码代码。首要的任务就是创建一个DataFrame,它有几种创建方式:
(1)列表,序列(pandas.Series), numpy.ndarray的字典
二维numpy.ndarray
别的DataFrame
结构化的记录(structured arrays)
(2)其中,二维ndarray创建DataFrame,代码敲得最少:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4))
df
 0 1 2 3
0 0.927474 0.127571 1.655908 0.570818
1 -0.425084 -0.382933 0.468073 -0.862898
2 -1.602712 -0.225793 -0.688641 1.167477
3 -1.771992 -0.692575 -0.693494 -1.063697
4 -0.456724 0.371165 1.883742 -0.344189
5 1.024734 0.647224 1.134449 0.266797
6 1.247507 0.114464 2.271932 -0.682767
7 -0.190627 -0.096997 -0.204778 -0.440155
8 -0.471289 -1.025644 -0.741181 -1.707240
9 -0.172242 0.702187 -1.138795 -0.112005
(3)通过describe方法,可以对df中的数据有个大概的了解:
df.describe()
  0 1 2 3
count 10.000000 10.000000 10.000000 10.000000
mean -0.189096 -0.046133 0.394722 -0.320786
std 1.027134 0.557420 1.258019 0.837497
min -1.771992 -1.025644 -1.138795 -1.707240
25% -0.467648 -0.343648 -0.692281 -0.817865
50% -0.307856 0.008734 0.131648 -0.392172
75% 0.652545 0.310266 1.525543 0.172096
max 1.247507 0.702187 2.271932 1.167477
2. 改变cell。
3. group by。
4. 读写文件。

怎么利用pandas做数据分析

2. 怎么利用pandas做数据分析

Pandas是Python下一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作。
1. 基本使用:创建DataFrame. DataFrame是一张二维的表,大家可以把它想象成一张Excel表单或者Sql表。Excel 2007及其以后的版本的最大行数是1048576,最大列数是16384,超过这个规模的数据Excel就会弹出个框框“此文本包含多行文本,无法放置在一个工作表中”。Pandas处理上千万的数据是易如反掌的sh事情,同时随后我们也将看到它比SQL有更强的表达能力,可以做很多复杂的操作,要写的code也更少。
说了一大堆它的好处,要实际感触还得动手码代码。首要的任务就是创建一个DataFrame,它有几种创建方式:
(1)列表,序列(pandas.Series), numpy.ndarray的字典
二维numpy.ndarray
别的DataFrame
结构化的记录(structured arrays)
(2)其中,二维ndarray创建DataFrame,代码敲得最少:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4))
df
 0 1 2 3
0 0.927474 0.127571 1.655908 0.570818
1 -0.425084 -0.382933 0.468073 -0.862898
2 -1.602712 -0.225793 -0.688641 1.167477
3 -1.771992 -0.692575 -0.693494 -1.063697
4 -0.456724 0.371165 1.883742 -0.344189
5 1.024734 0.647224 1.134449 0.266797
6 1.247507 0.114464 2.271932 -0.682767
7 -0.190627 -0.096997 -0.204778 -0.440155
8 -0.471289 -1.025644 -0.741181 -1.707240
9 -0.172242 0.702187 -1.138795 -0.112005
(3)通过describe方法,可以对df中的数据有个大概的了解:
df.describe()
  0 1 2 3
count 10.000000 10.000000 10.000000 10.000000
mean -0.189096 -0.046133 0.394722 -0.320786
std 1.027134 0.557420 1.258019 0.837497
min -1.771992 -1.025644 -1.138795 -1.707240
25% -0.467648 -0.343648 -0.692281 -0.817865
50% -0.307856 0.008734 0.131648 -0.392172
75% 0.652545 0.310266 1.525543 0.172096
max 1.247507 0.702187 2.271932 1.167477
2. 改变cell。
3. group by。
4. 读写文件。

3. 数据分析—利用pandas进行数据分组

测试数据集:
   链接: https://pan.baidu.com/s/1QvY-Qvtl_8QtsMi8sxUD-w
 
   提取码:di2z
  
 在pandas当中我们可以利⽤groupby()方法对数据进行分组,返回的是一个分组后的对象, groupby()里面的参数是指定分组的列,分组也分为两种方式 :
                                          
 group_name是分组的名称 ,group_df对应的每组的数据
                                                                                  
 其中括号中的参数 F为分组名称
                                          
 pandas给我们提供了很多的统计函数,我们可以直接拿来使⽤
  
 结果:60.470588235294116 94 21
  
 上⾯的⽅式我们⼀次只能计算⼀个数据,那么pandas还给我们提供了⼀个⽅法,可以同时进 ⾏多个运算
                                          
 各个变量的含义

数据分析—利用pandas进行数据分组

4. Pandas基础

  Pandas 是 Python 语言的一个扩展程序库,用于数据分析。    Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。   Pandas 名字衍生自术语 "panel data"(面板数据)和 "Python data analysis"(Python 数据分析)。   Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。   Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。   Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。   Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

5. Pandas入门数据分析01-什么是Pandas


Pandas入门数据分析01-什么是Pandas

6. Pandas介绍

 首先,需要先安装numpy和pandas环境,参考: https://pandas.pydata.org/    。以下语句检查并确认安装成功。
   Pandas 有三种基本数据结构:Series、DataFrame 和 Index。
   Pandas 的 Series 对象是一个带索引数据构成的一维数组。Series 对象将一组数据和一组索引绑定在一起,我们可以通过 values 属性和 index 属性获取数据。values 属性返回的结果与 NumPy 数组类似;index 属性返回的结果是一个类型为  pd.Index  的类数组对象。   可以像访问Numpy那样来访问Series(序号也是从0开始计数的)。
   Pandas 的 Series 对象比Numpy更加灵活、通用。   两者的主要区别是:NumPy 数组通过 隐式定义 的整数索引获取数值,而 Pandas 的 Series 对象用一种 显式定义 的索引与数值关联。也就是说,Numpy的索引是系统自分配的无法更改,但是Series对象是可以手工指定的。
   Series是 特殊的字典 ,Series 对象其实是一种将类型键映射到一组类型值的数据结构,Pandas Series 的类型信息使得它在某些操作上比 Python 的字典更高效。用字典创建 Series 对象时,其索引默认 按照顺序排列 。
   DataFrame类似于RDBMS中的Table。DataFrame就可以看作是一种既有灵活的行索引,又有灵活列名的二维数组。   DataFrame有2个常用属性,分别是 index 属性 和 columns 属性 。前者可以获取索引标签(行标签);后者是是存放列标签的Index 对象。DataFrame 是特殊的字典,一列映射一个Series 的数据。   DataFrame可以通过以下几种方式来创建:(1)通过单个 Series 对象创建。(2)通过字典列表创建。(3)通过 Series 对象字典创建。(4)通过NumPy 二维数组创建。(5)通过 NumPy 结构化数组创建。
   可以将Index视为一个不可变数组或有序集合。当作为不可变数组时,一般数组的访问方式(例如切片等)对Index适用,与数组的最大区别是 Index对象不可更改 。当作为集合时,Index也可以做交集、并集等常规操作。
   Series的访问既可以作为字典,也可以作为一维数组。数据访问的方法,可以参考Numpy的访问方式,这里不赘述。
   如果Series的显式索引是整数,那么在访问时,很容易混淆。例如下边的例子:
   从上边的例子总结得出,python的默认规则是:在单个访问时,使用的显式索引,而在切片时,使用的是隐式索引,很容易混淆!python提供了loc、iloc和ix三种索引器。   loc表示:表示取值和切片都是显式的。iloc 属性,表示取值和切片都是隐式索引。ix是loc和iloc的混合形式,应用于dataFrame(使用例子在3.3节)。
   dataframe可以通过对列名进行字典形式(dictionary-style)的取值获取数据。可以把 DataFrame 看成是一个增强版的二维数组,用 values 属性按行查看数组数据。ix 索引器对于整数索引的处理和之前在 Series 对象中介绍的一样,都容易让人混淆。
   对于一元运算(像函数与三角函数),这些通用函数将在输出结果中保留索引和列标签(很简单,所有元素做相应运算并返回);而对于二元运算(如加法和乘法),Pandas 在传递通用函数时会自动 对齐索引 进行计算。   当在两个 Series 或 DataFrame 对象上进行二元计算时,Pandas 会在计算过程中对齐两个对象的索引。如果想给缺失数值指定一个默认值,需要使用add来替代+,并指定fill_value:
   两个对象的行列索引可以是不同顺序的,结果的索引会自动按顺序排列。
   DataFrame 和 Series 的运算规则,与NumPy 中二维数组与一维数组的运算规则是一样的。需要使用广播原则,那么默认地,会按行计算。如果想要按列运算,需要使用参数axis = 0 。
   注意:DataFrame访问行可以使用loc,但是访问列,只能是df['col']这种形式了。
   缺失值有三种形式:null、NaN 或 NA。   处理缺失值,一般有两种方法:一种方法是通过一个覆盖全局的掩码表示缺失值,另一种方法是用一个标签值(sentinel value)表示缺失值。   掩码是利用一个跟原来一样大小的矩阵,用0或者1表示某个元素缺失。标签值是利用一个特殊字符例如NaN表示缺失。   Pandas 选择用标签方法表示缺失值,包括两种 Python 原有的缺失值: 浮点数据类型(包括整型) 的 NaN 值,以及 Python的 None 对象 。
   使用None时,表示一个空的python对象,所以numpy的dtype=object,因为是对象所以在进行大批量计算时,效率会比标量低。使用np.nan时表示标量,效率会高很多。
   对于缺失值,pandas提供了几个有用的API方法,分别是:isnull(),notnull(),dropna(),fillna()。其中,对于dataframe,dropna()方法默认会将包含NaN的整行都drop掉,如果想按照整列drop,增加axis=1参数。
   pandas的MultiIndex提供了多级索引的功能,用元组表示是多级索引的基础。
   下面例子,使用元组索引生成Series。筛选2019的索引,非常繁琐。
   Pandas 的 MultiIndex 类型提供多种实现方法,下边例子使用元组表示实现。   unstack() 方法可以快速将一个多级索引的 Series 转化为普通索引的DataFrame。stack() 方法实现相反的效果。
   总结一下,创建多级索引的方法包括:   (1)通过一个有不同等级的若干简单数组组成的列表来构建 MultiIndex:pd.MultiIndex.from_arrays。   (2) 多个索引值的元组构成的列表创建 MultiIndex:pd.MultiIndex.from_tuples。   (3)用两个索引的笛卡尔积创建MultiIndex:pd.MultiIndex.from_product。   (4)直接提供 levels和labels创建 MultiIndex(lablels是指每个级别的整数指定每个位置):
   上边的例子中,不管是Series还是DataFrame都是按照行来进行多级索引,其实,也可以按列索引,而且非常简单,下边是一个例子(几个学生在2018和2019两次考试的不同科目成绩):
   需要对多级索引做显示切片操作时,可以使用pd.IndexSlice对象来切,不同级别的维度,拿逗号分割,例如下边例子中的df_sd_003.loc[idx_sd[2018,:],idx_sd['Alice',:]]。其他切片和取值操作与Numpy很类似。
   如果 MultiIndex 不是有序的索引,那么大多数切片操作都会失败。   如果Series或者DataFrame的索引是未排序的,可以简单地通过sort_index方法来快速排序。   层级数据维度转换的另一种方法是行列标签转换,可以通过reset_index 方法实现
   通过pd.concat()实现pandas对象合并,pd.cancat的所有参数(下面列举的是这些参数的默认值):
   pd.concat() 可以简单地合并一维的 Series 或 DataFrame 对象,与   np.concatenate() 合并数组一样。   DataFrame 的合并默认都是逐行进行的(axis=0);pd.concat在合并时会保留索引,即使索引是重复的!如果设置 verify_integrity=True,那么生成重复索引时,会触发异常!有时索引无关紧要,那么合并时就可以忽略它们,可以通过设置 ignore_index 参数来实现。默认的合并方式是对所有输入列进行并集合并(join='outer'),当然也可以用 join='inner' 实现对输入列的交集合并。下面是一个实现合并的例子:
   Pandas 的基本特性之一就是高性能的内存式数据连接(join)与合并(merge)操作。
   pd.merge() 实现的功能基于关系代数(relational algebra)的一部分。 pd.merge() 函数实现了三种数据连接的类型:一对一、多对一和多对多。pd.merge()会自动识别2个dataframe共有的列,并以这个列进行关联。
   上边的例子中,关联的两个dataframe具有相同名称的列,pandas会直接按同名列合并,由于两个输入要合并的列通常都不是同名的,因此 pd.merge() 提供了一些参数处理这个问题。   1.最简单的方法就是直接将参数 on 设置为一个列名字符串或者一个包含多列名称的列表,这个参数只能在两个 DataFrame 有共同列名的时候才可以使用。

7. 深入浅出Pandas--Pandas的数据结构

Pandas提供Series和DataFrame作为数组数据的存储框架,数据进入这两种框架后,我们就可以利用它们提供的强大处理方法进行处理。
                                          
 需要注意的是,Pandas之前支持的三维面板(Panel)结构现已不再支持,可以使用多层索引形式来实现。
  
 Series(系列、数列、序列)是一个带有标签的一维数组,这一系列连续的数据代表了一定的业务意义。如以下各国2019年的GDP就是一个典型的Series。
                                          
 其中,国家是标签(也称索引),不是具体的数据,它起到解释、定位数据的作用。如果没有标签,只有一个数字,是不具有业务意义的。Series是Pandas最基础的数据结构。
  
 DataFrame意为数据框,它就像一个存放数据的架子,有多行多列,每个数据在一个格子里,每个格子有自己的编号。就像一个球场的座位(下图),我们在横向编成1排、2排、3排等,在纵向编成1号、2号、3号等,那么4排18号、6排1号等就是具体的位置,每个人落座后就像一个具体的数据。
                                          
 DataFrame是Pandas定义的一个二维数据结构,其结构如下图
                                          
 我们给上例国家GDP Series数据中增加一列“人口”,形成一个DataFrame
                                          
 在后续的内容中,在不同场景下可能会对索引使用以下名称。
  
 end~

深入浅出Pandas--Pandas的数据结构

最新文章
热门文章
推荐阅读