Python数据分析(3):pandas(上)

简介: Python数据分析(3):pandas

二. pandas入门


2.1 数据结构


pandas有两个重要的数据结构对象:Series和DataFrame


2.1.1 Series对象


Series是创建一个一维数组对象,会自动生成行标签


import pandas as pd
s = pd.Series(['短裤', '毛衣', '连衣裙', '牛仔裤'])
print(s)


0     短裤
1     毛衣
2    连衣裙
3    牛仔裤
dtype: object


index参数可以指定行标签


import pandas as pd
s1 = pd.Series(['短裤', '毛衣', '连衣裙', '牛仔裤'], index = ['a001', 'a002', 'a003', 'a004']) # 添加行标签
print(s1)


a001     短裤
a002     毛衣
a003    连衣裙
a004    牛仔裤
dtype: object


使用Series对象还可以基于字典创建数据


import pandas as pd
s2 = pd.Series({'a001':'短裤', 'a002':'毛衣', 'a003':'连衣裙', 'a004':'牛仔裤'})
print(s2)


a001     短裤
a002     毛衣
a003    连衣裙
a004    牛仔裤
dtype: object


2.1.2 DataFrame对象


会自动生成行列标签


import pandas as pd
df = pd.DataFrame([['短裤', 45], ['毛衣', 69], ['连衣裙', 119], ['牛仔裤', 99]])
print(df)


     0    1
0   短裤   45
1   毛衣   69
2  连衣裙  119
3  牛仔裤   99


可以columns参数指定列标签;index参数指定行标签


import pandas as pd
df1 = pd.DataFrame([['短裤', 45], ['毛衣', 69], ['连衣裙', 119], ['牛仔裤', 99]], 
                   columns=['产品', '单价'], index=['a001', 'a002', 'a003', 'a004'])
print(df1)


       产品   单价
a001   短裤   45
a002   毛衣   69
a003  连衣裙  119
a004  牛仔裤   99


例:也可以用字典形式生成数据


import pandas as pd
df3 = pd.DataFrame({'产品':['短裤', '毛衣', '连衣裙', '牛仔裤'],'单价':[45, 69, 119, 99]})
print(df3)


    产品   单价
0   短裤   45
1   毛衣   69
2  连衣裙  119
3  牛仔裤   99


例:在用字典生成数据的基础上,同时指定行标签


import pandas as pd
df3 = pd.DataFrame({'产品':['短裤', '毛衣', '连衣裙', '牛仔裤'],'单价':[45, 69, 119, 99]}, index = ['a001', 'a002', 'a003', 'a004'])
print(df3)


       产品   单价
a001   短裤   45
a002   毛衣   69
a003  连衣裙  119
a004  牛仔裤   99


2.2 读取数据


2.2.1 读取Excel:read_excel()


1. 读取特定工作簿:sheet_name


例如对下表的数据进行读取



4月是第四个表,我们应把sheet_name参数指定为3;因为索引是从0开始的。


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data)


   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34


可以看出read_excel()函数自动创建了一个DataFrame对象,同时自动把第一行数据当做列标签。


2. 指定列标签:header


可以看出不给出header参数时,该参数默认为0。


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, header=0)
print(data)


   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34


header=1时结果如下:


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, header=1)
print(data)


   d001  投影仪  5台  2000
0  d002  马克笔  5盒   300
1  d003  打印机  1台   298
2  d004  点钞机  1台   349
3  d005  复印纸  2箱   100
4  d006  条码纸  6卷    34


header=None时结果如下:


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3, header = None)
print(data)


      0    1   2     3
0  订单编号   产品  数量    金额
1  d001  投影仪  5台  2000
2  d002  马克笔  5盒   300
3  d003  打印机  1台   298
4  d004  点钞机  1台   349
5  d005  复印纸  2箱   100
6  d006  条码纸  6卷    34


3. 指定行标签:index_col


该参数默认为None


index_col=0时,第0列为列标签


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data)


       产品  数量    金额
订单编号               
d001  投影仪  5台  2000
d002  马克笔  5盒   300
d003  打印机  1台   298
d004  点钞机  1台   349
d005  复印纸  2箱   100
d006  条码纸  6卷    34


index_col=1时


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=1)
print(data)


     订单编号  数量    金额
产品                 
投影仪  d001  5台  2000
马克笔  d002  5盒   300
打印机  d003  1台   298
点钞机  d004  1台   349
复印纸  d005  2箱   100
条码纸  d006  6卷    34


4. 读取指定列:usecols


usecols=[2]:指定第二列


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, usecols=[2])
print(data)


   数量
0  5台
1  5盒
2  1台
3  1台
4  2箱
5  6卷


指定多列


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, usecols=[1, 3])
print(data)


    产品    金额
0  投影仪  2000
1  马克笔   300
2  打印机   298
3  点钞机   349
4  复印纸   100
5  条码纸    34


2.2.2 读取csv:read_csv()



import pandas as pd
data = pd.read_csv('订单表.csv')
print(data)


   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34


nrows参数可以指定显示的行数


import pandas as pd
data = pd.read_csv('订单表.csv', nrows=3)  # 显示三行
print(data)


   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298


2.3 查看数据的行数和列数


2.3.1 查看前几行:head()


head()函数中参数为空默认前5行


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.head())


   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100


例:指定head(3)时如下


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.head(3))


   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298


2.3.2 查看行数和列数:shape


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data)
print(data.shape)


   订单编号   产品  数量    金额
0  d001  投影仪  5台  2000
1  d002  马克笔  5盒   300
2  d003  打印机  1台   298
3  d004  点钞机  1台   349
4  d005  复印纸  2箱   100
5  d006  条码纸  6卷    34
(6, 4)


2.3.3 查看数据的类型:info()、dtype、astype()


1. info()函数


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3)
print(data.info())


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   订单编号    6 non-null      object
 1   产品      6 non-null      object
 2   数量      6 non-null      object
 3   金额      6 non-null      int64 
dtypes: int64(1), object(3)
memory usage: 320.0+ bytes
None


2. dtype参数


例:查看特定列的书库类型


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3)
print(data['金额'].dtype)


int64


3. astype()函数


例:特定列的数据类型转换


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name = 3)
data['金额'] = data['金额'].astype('float64')
print(data)
print(data['金额'].dtype)


   订单编号   产品  数量      金额
0  d001  投影仪  5台  2000.0
1  d002  马克笔  5盒   300.0
2  d003  打印机  1台   298.0
3  d004  点钞机  1台   349.0
4  d005  复印纸  2箱   100.0
5  d006  条码纸  6卷    34.0
float64


2.4 选择数据


2.4.1 选择行:loc()、iloc()


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)  #index_col指定行标签
print(data)


       产品  数量    金额
订单编号               
d001  投影仪  5台  2000
d002  马克笔  5盒   300
d003  打印机  1台   298
d004  点钞机  1台   349
d005  复印纸  2箱   100
d006  条码纸  6卷    34


1. 挑选单行


loc()函数加行标签指定行


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.loc['d001'])


产品     投影仪
数量      5台
金额    2000
Name: d001, dtype: object


iloc()函数加索引指定行号


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.iloc[2])


产品    打印机
数量     1台
金额    298
Name: d003, dtype: object


2. 挑选多行


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.loc[['d002', 'd004']])


       产品  数量   金额
订单编号              
d002  马克笔  5盒  300
d004  点钞机  1台  349


iloc()挑选:


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.iloc[[1, 5]])  # 1,5


       产品  数量   金额
订单编号              
d002  马克笔  5盒  300
d006  条码纸  6卷   34
       产品  数量   金额


或者给出区间


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
print(data.iloc[1:5])  #1-5


       产品  数量   金额
订单编号              
d002  马克笔  5盒  300
d003  打印机  1台  298
d004  点钞机  1台  349
d005  复印纸  2箱  100


3. 挑选满足条件的行


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
a = data['金额'] < 300   #挑选金额>300的行
print(data[a])


       产品  数量   金额
订单编号              
d003  打印机  1台  298
d005  复印纸  2箱  100
d006  条码纸  6卷   34


2.4.2 选择列数据:iloc()


1. 挑选单列


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data['产品'])


0    投影仪
1    马克笔
2    打印机
3    点钞机
4    复印纸
5    条码纸
Name: 产品, dtype: object


2. 挑选多列


例:通过列标签挑选多列


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data[['产品', '金额']])


    产品    金额
0  投影仪  2000
1  马克笔   300
2  打印机   298
3  点钞机   349
4  复印纸   100
5  条码纸    34


例:通过索引挑选多列


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.iloc[:, [1,3]])


    产品    金额
0  投影仪  2000
1  马克笔   300
2  打印机   298
3  点钞机   349
4  复印纸   100
5  条码纸    34


或者写成区间


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3)
print(data.iloc[:, 1:3])  # 左闭右开


    产品  数量
0  投影仪  5台
1  马克笔  5盒
2  打印机  1台
3  点钞机  1台
4  复印纸  2箱
5  条码纸  6卷


2.4.3 同时选择行列数据


例:通过标签挑选


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
data1 = data.loc[['d001', 'd005'], ['产品', '金额']]
print(data1)


       产品    金额
订单编号           
d001  投影仪  2000
d005  复印纸   100


例:通过索引挑选


import pandas as pd
data = pd.read_excel('订单表.xlsx', sheet_name=3, index_col=0)
data2 = data.iloc[[2, 4], [0, 2]]
print(data2)


       产品   金额
订单编号          
d003  打印机  298
d005  复印纸  100
目录
相关文章
|
10天前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
108 71
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
【10月更文挑战第42天】本文是一篇技术性文章,旨在为初学者提供一份关于如何使用Python进行数据分析的入门指南。我们将从安装必要的工具开始,然后逐步介绍如何导入数据、处理数据、进行数据可视化以及建立预测模型。本文的目标是帮助读者理解数据分析的基本步骤和方法,并通过实际的代码示例来加深理解。
73 3
|
9天前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
107 73
|
6天前
|
存储 数据采集 数据可视化
Pandas数据应用:医疗数据分析
Pandas是Python中强大的数据操作和分析库,广泛应用于医疗数据分析。本文介绍了使用Pandas进行医疗数据分析的常见问题及解决方案,涵盖数据导入、预处理、清洗、转换、可视化等方面。通过解决文件路径错误、编码不匹配、缺失值处理、异常值识别、分类变量编码等问题,结合Matplotlib等工具实现数据可视化,并提供了解决常见报错的方法。掌握这些技巧可以提高医疗数据分析的效率和准确性。
49 22
|
11天前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
44 5
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
105 4
数据分析的 10 个最佳 Python 库
|
2月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
2月前
|
存储 数据可视化 数据挖掘
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势
|
2月前
|
数据采集 存储 数据可视化
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
下一篇
开通oss服务