快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → 数据分析——Pandas入门

数据分析——Pandas入门

时间:2022-09-23 10:41:35人气:作者:快盘下载我要评论

编程工具;jupyter notebook 

一、基本认识

1. 导入库

import pandas as pd
import warnings

2. 屏蔽警告提示

warnings.filterwarnings(;ignore;)

 3.读取Excel

df = pd.read_excel(;./data/demo_01.xlsx;, engine=;openpyxl;)       # 相对路径;engine=;openpyxl;  引擎可以不加;但是旧版本需要加
df = pd.read_excel(;./data/demo_01.xlsx;) 

4.预览前5行

df.head(5)

数据分析——Pandas入门

 5.列名对齐

display.unicode.ambiguous_as_widedisplay.unicode.east_asian_width
pd.set_option(;display.unicode.ambiguous_as_wide;, True)
pd.set_option(;display.unicode.east_asian_width;, True)

 6.禁止换行

pd.set_option(;expand_frame_repr;, False)

7.显示所有行

pd.set_option(;display.max_rows;, None)

8.最多显示10行

pd.set_option(;display.max_rows;, 10)

9.显示所有列

pd.set_option(;display.max_columns;, None)

10.最多显示10列

pd.set_option(;display.max_columns;, 10)

11.设置内容的显示宽度

pd.set_option(;display.width;, 100)

12.设置数值的显示精度

pd.set_option(;display.precision;, 2)

13.设置小数的显示格式

pd.set_option(;display.float_format;, lambda x: %.2f; % x)
# ;{:.2f};.format(x);小数点
# ;{:.2%};.format(x);百分比

14.设置计算引擎

pd.set_option(;compute.use_numba;, True)      # 当数据处理量较大速度较慢时可以设置为此计算引擎

15.获取指定选项的设置情况

pd.get_option(;compute.use_numba;)

16.条件格式

# pandas.io.formats.style.Styler
df.style.Highlight_max()   #高亮显示最大值

二、Scries对象

import pandas as pd

1.创建Series对象

pd.Series([80,90,88])      #pd.Series(data=None,index=None,dtype=None,name=None,copy=False,fastpath=False,)

数据分析——Pandas入门

 2.设置Series索引

2.1 数字索引

pd.Series(data=[80,90,88],index=[1,2,3])

数据分析——Pandas入门

 2.2字符串索引

pd.Series(data=[80,90,88],index=[;张三;,;李四;,;王五;])

数据分析——Pandas入门

 3.Series的索引操作

s4 = pd.Series(data=[80,90,88,96],index=[;张三;,;李四;,;王五;,;赵六;])
s4

数据分析——Pandas入门

# 取第一个同学的成绩
s4[0],s4[;张三;]

数据分析——Pandas入门

 3.1通过索引号获取值

s4[0]

80

3.2通过索引名获取值

s4[;张三;]

80

3.3通过多个索引名获取值

s4[ [;张三;,;赵六;] ]
张三    80
赵六    96
dtype: int64

3.4通过索引名切片获取值
 

s4
张三    80
李四    90
王五    88
赵六    96
dtype: int64
s4[;张三;:;王五;]       # 通过索引名切片;左右都包含;通过索引号切片左闭右开
张三    80
李四    90
王五    88
dtype: int64

3.5通过索引号切片获取值

s4[:3]          #通过索引号切片左闭右开
张三    80
李四    90
王五    88
dtype: int64

3.6获取Series的索引

s4.index    # 获取s4的索引
Index([;张三;, ;李四;, ;王五;, ;赵六;], dtype=;object;)

3.7获取Series的值

s4.values     # 获取s4的值
array([80, 90, 88, 96], dtype=int64)
type(s4.values)
numpy.ndarray

3.8判断Series是否包含空值

s4.hasnans
False

三、DataFrame对象

import pandas as pd

1.创建DataFrame对象

data = [[110, 105, 99],
        [105, 88, 115],
        [109, 120, 130]]
index = [0, 1, 2]
columns = [;语文;, ;数学;, ;英语;]

#pd.DataFrame(data=None,index:;Optional[Axes];=None,columns:;Optional[Axes];=None,dtype:;Optional[Dtype];= None,copy:;bool;=False)
df = pd.DataFrame(data=data,index=index,columns=columns)     
df

数据分析——Pandas入门

 2.遍历DataFrame每列

df[;语文;]
0    110
1    105
2    109
Name: 语文, dtype: int64
type(df[;语文;])
pandas.core.series.Series
for col in df.columns:
    print(type(df[col]))
<class ;pandas.core.series.Series;>
<class ;pandas.core.series.Series;>
<class ;pandas.core.series.Series;>

3.通过字典创建DataFrame

value为多个元素
dct = {
    ;语文;: [110, 105, 99],
    ;数学;: [105, 88, 115],
    ;英语;: [109, 120, 130]}

df = pd.DataFrame(data=dct,index=[1,2,3])
df

 数据分析——Pandas入门

 4.通过字典创建DataFrame

value为一个元素
dct = {
    ;语文;: 110,
    ;数学;: 105,
    ;英语;: 109}

df = pd.DataFrame(data=dct,index=[0])      # 一行数据 index 也要传入列表格式
df

 数据分析——Pandas入门

dct = {;语文;: [110],
    ;数学;: [105],
    ;英语;: [109]}
pd.DataFrame(data=dct)

 数据分析——Pandas入门

 5.DataFrame的重要属性

5.1查看所有元素的值

dct = {
    ;语文;: [110, 105, 99],
    ;数学;: [105, 88, 115],
    ;英语;: [109, 120, 130]}
df = pd.DataFrame(data=dct,index=[1,2,3])
df

数据分析——Pandas入门

df.values
array([[110, 105, 109],
       [105,  88, 120],
       [ 99, 115, 130]], dtype=int64)

5.2查看某列的唯一值

df[;语文;].unique()    # 查看 语文 列中去重后的数据
array([110, 105,  99], dtype=int64)

5.3查看所有元素的类型

df.dtypes    # 查看每个字段的数据类型
语文    int64
数学    int64
英语    int64
dtype: object

5.4查看所有行名

# index ——> 行索引;索引
# column ——> 列索引;字段;列名
df.index
Int64Index([1, 2, 3], dtype=;int64;)

5.5重命名行名

df.index = [;a1;,;a2;,;a3;]
df

数据分析——Pandas入门

 5.6查看所有列名

df.columns
Index([;语文;, ;数学;, ;英语;], dtype=;object;)

5.7重命名列名

df.columns = [;语;,;数;,;外;]
df

数据分析——Pandas入门

 5.8行列转置

df.T

数据分析——Pandas入门

 5.9查看前n条数据

默认5条
df.head()

 数据分析——Pandas入门

 5.10查看前10条数据

df.head(10)

数据分析——Pandas入门

 5.11查看后n条数据

默认5条
df.tail()

数据分析——Pandas入门

 5.12查看后10条数据

df.tail(10)

数据分析——Pandas入门

 5.13查看行数

0表示行
df.shape[0]

3

5.14查看列数

1表示列
df.shape[1]

3

5.15查看基本信息

索引、数据类型、非空值数量和内存信息
df.info()
<class ;pandas.core.frame.DataFrame;>
Index: 3 entries, a1 to a3
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   语       3 non-null      int64
 1   数       3 non-null      int64
 2   外       3 non-null      int64
dtypes: int64(3)
memory usage: 204.0; bytes

6.DataFrame的重要函数

6.1查看每列的描述统计信息

返回DataFrame类型
df.describe()

 数据分析——Pandas入门

type(df.describe())
pandas.core.frame.DataFrame
df.describe().round(2)  # 保留两位小数

数据分析——Pandas入门

 6.2返回每列非空值数量

df.count()
语    3
数    3
外    3
dtype: int64

6.3返回每列的合计

无法计算返回空值
df.sum()
语    314
数    308
外    359
dtype: int64

6.4返回每列的最大值

df.max()
语    110
数    115
外    130
dtype: int64

6.5返回每列的最小值

df.min()
语     99
数     88
外    109
dtype: int64

6.6返回最大值的索引号

原始的数字索引
df

数据分析——Pandas入门

# 原始索引;从0开始递增
df[;语;].argmax()    # 语文中最大的原始索引

0

6.7返回最小值的索引号

原始的数字索引
df[;语;].argmin()

 2

6.8 返回最大值的索引名

自定义的索引
df[;语;].idxmax()
;a1;

6.9返回最小值的索引名

自定义的索引
df[;语;].idxmin()
;a3;

6.10返回每列的平均值

df.mean()
语    104.666667
数    102.666667
外    119.666667
dtype: float64

6.11返回每列的中位数

中位数又称中值;按顺序排列后处于中间位置的数值
df.median()
语    105.0
数    105.0
外    120.0
dtype: float64

6.12返回每列的方差

用于衡量一组数据的离散程度
df.var()
语     30.333333
数    186.333333
外    110.333333
dtype: float64

6.13返回每列的标准差

标准差是方差的算术平方根也用于衡量一组数据的离散程度
df.std()
语     5.507571
数    13.650397
外    10.503968
dtype: float64

6.14检查df中的空值

空值为True;否则为False;返回布尔型数组
df.isnull()

 数据分析——Pandas入门

 6.15检查df中的非空值

非空值为True;否则为False;返回布尔型数组
df.notnull()

 数据分析——Pandas入门

四、数据导入

import pandas as pd

1.导入Excel

df1 = pd.read_excel(;./data/demo_04.xlsx;)    # 默认读取第一个工作表
df1.head(5)

数据分析——Pandas入门

2.导入Excel的指定Sheet

pd.read_excel(;./data/demo_04.xlsx;, sheet_name=;工作表2;)      # 参数 sheet_name 设为想要读取的工作表名称

 数据分析——Pandas入门

 3.设置第2行为列索引

pd.read_excel(;./data/demo_04.xlsx;, sheet_name=;工作表3;)   # 默认第一行作为表头

数据分析——Pandas入门

pd.read_excel(;./data/demo_04.xlsx;, sheet_name=;工作表3;,header=1)

 数据分析——Pandas入门

4.通过指定的列索引来导入第1列

pd.read_excel(;./data/demo_04.xlsx;, sheet_name=;工作表1;,usecols=[0])

 数据分析——Pandas入门

 5.通过指定的列索引来导入第1列、第4列

pd.read_excel(;./data/demo_04.xlsx;, sheet_name=;工作表1;,usecols=[0,3])

数据分析——Pandas入门

 6.通过指定的列名来导入指定列

pd.read_excel(;./data/demo_04.xlsx;, sheet_name=;工作表1;,usecols=[;name;,;sex;])

数据分析——Pandas入门

 7.导入csv;并指定编码格式

pd.read_csv(;./data/demo_04.csv;,encoding=;utf-8;)

数据分析——Pandas入门

 8.导入txt;并指定编码格式

pd.read_csv(;./data/demo_04.txt;,encoding=;utf-8;,sep=;	;)    # 参数 sep 设置分隔符;默认是逗号

数据分析——Pandas入门

 9.导入json;并指定数据结构 

split, records, index, table, values

 ;1;index结构

# {
#   ;0;: {
#     ;姓名;: ;王晨;,
#     ;电话;: 13807990096
#   },
#   ;1;: {
#     ;姓名;: ;刘英;,
#     ;电话;: 15317068630
#   },
#   ;2;: {
#     ;姓名;: ;王婷;,
#     ;电话;: 15069162098
#   },
#   ;3;: {
#     ;姓名;: ;余颖;,
#     ;电话;: 15110247460
#   },
#   ;4;: {
#     ;姓名;: ;程秀珍;,
#     ;电话;: 15052126982
#   },
#   ;5;: {
#     ;姓名;: ;孙飞;,
#     ;电话;: 15187633436
#   },
#   ;6;: {
#     ;姓名;: ;戚阳;,
#     ;电话;: 15749935938
#   },
#   ;7;: {
#     ;姓名;: ;李璐;,
#     ;电话;: 18712343795
#   },
#   ;8;: {
#     ;姓名;: ;秦静;,
#     ;电话;: 15800229061
#   },
#   ;9;: {
#     ;姓名;: ;张莹;,
#     ;电话;: 13718317243
#   }
# }
pd.read_json(;./data/index.json;,orient=;index;)       # 通过 orient 参数修改 json 的数据结构格式

 数据分析——Pandas入门

 ;2;records结构

# [
#   {
#     ;姓名;: ;王晨;,
#     ;电话;: 13807990096
#   },
#   {
#     ;姓名;: ;刘英;,
#     ;电话;: 15317068630
#   },
#   {
#     ;姓名;: ;王婷;,
#     ;电话;: 15069162098
#   },
#   {
#     ;姓名;: ;余颖;,
#     ;电话;: 15110247460
#   },
#   {
#     ;姓名;: ;程秀珍;,
#     ;电话;: 15052126982
#   },
#   {
#     ;姓名;: ;孙飞;,
#     ;电话;: 15187633436
#   },
#   {
#     ;姓名;: ;戚阳;,
#     ;电话;: 15749935938
#   },
#   {
#     ;姓名;: ;李璐;,
#     ;电话;: 18712343795
#   },
#   {
#     ;姓名;: ;秦静;,
#     ;电话;: 15800229061
#   },
#   {
#     ;姓名;: ;张莹;,
#     ;电话;: 13718317243
#   }
# ]
pd.read_json(;./data/records.json;,orient=;records;)

数据分析——Pandas入门

 ;3;split结构

# {
#   ;columns;: [
#     ;姓名;,
#     ;电话;
#   ],
#   ;index;: [
#     0,
#     1,
#     2,
#     3,
#     4,
#     5,
#     6,
#     7,
#     8,
#     9
#   ],
#   ;data;: [
#     [
#       ;王晨;,
#       13807990096
#     ],
#     [
#       ;刘英;,
#       15317068630
#     ],
#     [
#       ;王婷;,
#       15069162098
#     ],
#     [
#       ;余颖;,
#       15110247460
#     ],
#     [
#       ;程秀珍;,
#       15052126982
#     ],
#     [
#       ;孙飞;,
#       15187633436
#     ],
#     [
#       ;戚阳;,
#       15749935938
#     ],
#     [
#       ;李璐;,
#       18712343795
#     ],
#     [
#       ;秦静;,
#       15800229061
#     ],
#     [
#       ;张莹;,
#       13718317243
#     ]
#   ]
# }
pd.read_json(;./data/split.json;,orient=;split;)

数据分析——Pandas入门

 ;4;table结构

# {
#   ;schema;: {
#     ;fields;: [
#       {
#         ;name;: ;index;,
#         ;type;: ;integer;
#       },
#       {
#         ;name;: ;姓名;,
#         ;type;: ;string;
#       },
#       {
#         ;name;: ;电话;,
#         ;type;: ;integer;
#       }
#     ],
#     ;primaryKey;: [
#       ;index;
#     ],
#     ;pandas_version;: ;0.20.0;
#   },
#   ;data;: [
#     {
#       ;index;: 0,
#       ;姓名;: ;王晨;,
#       ;电话;: 13807990096
#     },
#     {
#       ;index;: 1,
#       ;姓名;: ;刘英;,
#       ;电话;: 15317068630
#     },
#     {
#       ;index;: 2,
#       ;姓名;: ;王婷;,
#       ;电话;: 15069162098
#     },
#     {
#       ;index;: 3,
#       ;姓名;: ;余颖;,
#       ;电话;: 15110247460
#     },
#     {
#       ;index;: 4,
#       ;姓名;: ;程秀珍;,
#       ;电话;: 15052126982
#     },
#     {
#       ;index;: 5,
#       ;姓名;: ;孙飞;,
#       ;电话;: 15187633436
#     },
#     {
#       ;index;: 6,
#       ;姓名;: ;戚阳;,
#       ;电话;: 15749935938
#     },
#     {
#       ;index;: 7,
#       ;姓名;: ;李璐;,
#       ;电话;: 18712343795
#     },
#     {
#       ;index;: 8,
#       ;姓名;: ;秦静;,
#       ;电话;: 15800229061
#     },
#     {
#       ;index;: 9,
#       ;姓名;: ;张莹;,
#       ;电话;: 13718317243
#     }
#   ]
# }
pd.read_json(;./data/table.json;,orient=;table;)

数据分析——Pandas入门

 ;5;values结构

# [
#   [
#     ;王晨;,
#     13807990096
#   ],
#   [
#     ;刘英;,
#     15317068630
#   ],
#   [
#     ;王婷;,
#     15069162098
#   ],
#   [
#     ;余颖;,
#     15110247460
#   ],
#   [
#     ;程秀珍;,
#     15052126982
#   ],
#   [
#     ;孙飞;,
#     15187633436
#   ],
#   [
#     ;戚阳;,
#     15749935938
#   ],
#   [
#     ;李璐;,
#     18712343795
#   ],
#   [
#     ;秦静;,
#     15800229061
#   ],
#   [
#     ;张莹;,
#     13718317243
#   ]
# ]
df = pd.read_json(;./data/values.json;,orient=;values;)
df.columns = [;姓名;,;电话;]    # values 需要自己定义字段名称
df

数据分析——Pandas入门

五、数据抽取

import pandas as pd

1.创建DataFrame对象

data = [[109, 107, 100],
        [105, 114, 135],
        [98, 88, 120],
        [145, 150, 130]]
name = [;刘备;, ;关羽;, ;张飞;, ;诸葛亮;]
columns = [;语文;, ;数学;, ;英语;]
df = pd.DataFrame(
    data=data,
    index=name,
    columns=columns)
df

数据分析——Pandas入门

 2.使用loc方法抽取

# 通过名称筛选
df.loc[;刘备;]
语文    109
数学    107
英语    100
Name: 刘备, dtype: int64
type(df.loc[;刘备;])

pandas.core.series.Series

3.使用iloc方法抽取

# 通过索引号筛选
df.iloc[0]
语文    109
数学    107
英语    100
Name: 刘备, dtype: int64
df.iloc[[0,3]]    # 读取下表为 0 ;3 的行

数据分析——Pandas入门

 4.抽取指定行的数据

使用loc和iloc

4.1从“刘备”到“诸葛亮”

df.loc[;刘备;:;诸葛亮;]    # 通过切片方式;左闭右闭

数据分析——Pandas入门 

 4.2第1行到“关羽”

df.loc[:;关羽;]

数据分析——Pandas入门

 4.3第1行到第4行

df.iloc[:4]

数据分析——Pandas入门

 4.4第2行到最后1行

df.iloc[1:]

数据分析——Pandas入门

 5.抽取指定列的数据

df

数据分析——Pandas入门

 5.1直接使用列名

df[;语文;]
刘备     109
关羽     105
张飞      98
诸葛亮    145
Name: 语文, dtype: int64
df[[;语文;]]

数据分析——Pandas入门

 

df[[;语文;,;数学;]]

数据分析——Pandas入门

 5.2使用loc和iloc

5.2.1抽取“语文”和“数学”

df.loc[:,[;语文;,;数学;]]

数据分析——Pandas入门

 5.2.2抽取第1列和第2列

df.iloc[:,[0,1]]

数据分析——Pandas入门

 5.2.3抽取从“语文”开始到最后1列

df.loc[:,;语文;:]

数据分析——Pandas入门

 5.2.4抽取从第1列开始到第3列

df.iloc[:,:3]

数据分析——Pandas入门

 6.抽取指定行列的数据

使用loc和iloc

6.1  “英语”成绩 

df.loc[:,;英语;]
刘备     100
关羽     135
张飞     120
诸葛亮    130
Name: 英语, dtype: int64

6.2“关羽”的“英语”成绩

df.loc[;关羽;,;英语;]

135

df.loc[[;关羽;],[;英语;]]

数据分析——Pandas入门

 6.3“关羽”的“数学”和“英语”成绩

df.loc[[;关羽;],[;英语;,;数学;]]

数据分析——Pandas入门

 6.4第2行第3列

df.iloc[1,2]

135

df.iloc[[1],[2]]

数据分析——Pandas入门

 6.5第2行到最后1行;第3列

df.iloc[1:,[2]]

数据分析——Pandas入门

 6.6第2行到最后1行;第1列和第3列

df.iloc[1:,[0,2]]

数据分析——Pandas入门

 6.7所有行;第3列

df.iloc[:,[2]]

数据分析——Pandas入门

 7.按指定条件抽取数据

df

数据分析——Pandas入门

 7.1  语文大于105且数学大于88

df.loc[ (df[;语文;] > 105) & (df[;数学;] > 88) ]    # 注意加括号

数据分析——Pandas入门

cod1 = df[;语文;] > 105
cod2 = df[;数学;] > 88
df.loc[ cod1 & cod2]

数据分析——Pandas入门

 7.2  语文大于105或数学大于88

df.loc[ (df[;语文;] > 105) | (df[;数学;] > 88) ]    # 注意加括号

数据分析——Pandas入门

cod1 = df[;语文;] > 105
cod2 = df[;数学;] > 88
df.loc[ cod1 | cod2]

数据分析——Pandas入门

 7.3  语文不等于105

!=
df.loc[ df[;语文;] != 105 ]

 数据分析——Pandas入门

 7.4  语文不等于105

~
df.loc[~(df[;语文;] == 105)]     # 注意括号

 数据分析——Pandas入门

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。