最全最简单的pandas入门教程(精简版)

640?wx_fmt=gif

640?wx_fmt=jpeg

python进阶教程

机器学习

深度学习

长按二维码关注

进入正文


pandas基础教程

目录

一 DataFrame

   1.1 创建Series

   1.2 创建时间序列

   1.3 创建DataFrame

   1.4 DataFrame属性

   1.5 DataFrame常用操作

二 数据选择

   2.1 选择列

   2.2 选择行

   2.3 标签选择:loc

   2.4 位置选择:iloc

   2.5 混合标签与位置:ix

   2.6 Boolean选择

三 处理NaN数据

   3.1 删除NaN数据

   3.2 填充NaN数据

   3.3 检查是否存在NaN

四 导入与导出

五 合并DataFrame

   5.1 concat函数

   5.2 append函数

   5.3 merge函数

六 绘图

首先引入相关模块:

import numpy as np
import pandas as pd

01

DataFrame

第一章 DataFrame
1.1 创建Series


index不指定则从0开始编号

s = pd.Series([1, 2, 3, np.nan], index=['A', 'B', 'C', 'D'])
print s

输出 

第一章 DataFrame
1.2 创建时间序列


必须指定start、end、periods中的两个参数值

dates = pd.date_range('20180101', periods=5)
print dates

输出 

DatetimeIndex([‘2018-01-01’, ‘2018-01-02’, ‘2018-01-03’, ‘2018-01-04’, 

‘2018-01-05’], 

dtype=’datetime64[ns]’, freq=’D’)

第一章 DataFrame
1.3 创建DataFrame


必须指定start、end、periods中的两个参数值

df = pd.DataFrame(np.random.rand(3,4),columns=['a', 'b', 'c', 'd'])
print df

输出 

a b c d 

0 0.233310 0.170256 0.036988 0.697916 

1 0.159580 0.287814 0.528123 0.956051 

2 0.815038 0.438103 0.143477 0.769143

通过字典创建(key为列名):

df = pd.DataFrame({'A': 1,
                   'B': pd.Timestamp('20171208'),
                   'C': pd.Series(np.arange(4)),
                   'D': pd.Categorical(['test', 'train', 'test', 'train'])})
print df

输出 

A B C D 

0 1 2017-12-08 0 test 

1 1 2017-12-08 1 train 

2 1 2017-12-08 2 test 

3 1 2017-12-08 3 train

第一章 DataFrame
1.4 DataFrame属性


df = pd.DataFrame({'A': 1,
                   'B': pd.Timestamp('20171208'),
                   'C': pd.Series(np.arange(4)),
                   'D': pd.Categorical(['test', 'train', 'test', 'train'])})

查看每列数据类型

print df.dtypes

输出 

查看索引

print df.index  

输出 

查看列名

print df.columns

输出 

查看数据

print df.values  

输出 

[[1L Timestamp(‘2017-12-08 00:00:00’) 0 ‘test’] 

[1L Timestamp(‘2017-12-08 00:00:00’) 1 ‘train’] 

[1L Timestamp(‘2017-12-08 00:00:00’) 2 ‘test’] 

[1L Timestamp(‘2017-12-08 00:00:00’) 3 ‘train’]]

DataFrame统计信息

print df.describe()

输出 

A C 

count 4.0 4.000000 

mean 1.0 1.500000 

std 0.0 1.290994 

min 1.0 0.000000 

25% 1.0 0.750000 

50% 1.0 1.500000 

75% 1.0 2.250000 

max 1.0 3.000000

第一章 DataFrame
1.5 DataFrame常用操作


转置

df = pd.DataFrame(np.arange(12).reshape((3,4)),columns=['a', 'b', 'c', 'd'])
print df.T

输出 

按index排序

df = pd.DataFrame(np.arange(12).reshape((3, 4)), columns=['a', 'b', 'c', 'd'])
print df.sort_index(axis=1, ascending=False)

输出 

按值排序

df = pd.DataFrame(np.arange(12).reshape((3, 4)), columns=['a', 'b', 'c', 'd'])
print df.sort_values(by='b', ascending=False)

输出 

02

数据选择

创建如下dataframe:

dates = pd.date_range('20180101', periods=3)
df = pd.DataFrame(np.arange(12).reshape((3, 4)),
                  index=dates, columns=['a', 'b', 'c', 'd'])
print df

输出 

第二章 数据选择
2.1 选择列

print df['a']  # print df.a

输出 

第二章 数据选择
2.2 选择行

print df[0:2]  # print df['20180101':'20180102']

输出 

第二章 数据选择
2.3 标签选择:loc

print df.loc[:,['a', 'b']] 

输出 

print df.loc['20180102']

输出 

第二章 数据选择
2.4 位置选择:iloc

 
      

输出 

第二章 数据选择
2.5 混合标签与位置:ix

输出 

第二章 数据选择
2.6 Boolean选择

rint df[df.a < 5]

输出 

03

处理NaN数据

首先创建包含NaN的dataframe:

dates = pd.date_range('20180101', periods=3)
df = pd.DataFrame(np.arange(12).reshape((3, 4)),
                  index=dates, columns=['a', 'b', 'c', 'd'])
df.iloc[1, 1], df.iloc[2, 2] = np.nan, np.nan
print df

输出 

第三章 处理NaN数据
3.1 删除NaN数据

print df.dropna(axis=1)  # how = ['any', 'all']

输出 

第三章 处理NaN数据
3.2 填充NaN数据

print df.fillna(value='*')

输出 

第三章 处理NaN数据
3.3 检查是否存在NaN数据

print df.isnull()

输出 

a b c d 

2018-01-01 False False False False 

2018-01-02 False True False False 

2018-01-03 False False True False

04

导入与导出

导入函数导出函数功能
read_csvto_csv
read_excelto_excel
read_sqlto_sql
read_jsonto_json
read_msgpackto_msgpack
read_htmlto_html
read_gbqto_gbq
read_statato_stata
read_sasto_sas
read_clipboardto_clipboard
read_pickleto_pickle

以下面这个test.txt为例:

A B 

忽略第一行,并设置列名分别为‘name’和‘age’

data = pd.read_csv('test.txt', sep=' ', skiprows=1, names=['name','age'])
print data

输出 

05

合并DataFrame

第五章 合并DataFrame
5.1 concat函数

df1 = pd.DataFrame(np.ones((3, 4))*0, columns=['a', 'b', 'c', 'd'])
df2 = pd.DataFrame(np.ones((3, 4))*1, columns=['a', 'b', 'c', 'd'])
df3 = pd.DataFrame(np.ones((3, 4))*2, columns=['a', 'b', 'c', 'd'])
# ignore_index=True将重新对index排序
print pd.concat([df1, df2, df3], axis=0, ignore_index=True)

输出 

a b c d 

0 0.0 0.0 0.0 0.0 

1 0.0 0.0 0.0 0.0 

2 0.0 0.0 0.0 0.0 

3 1.0 1.0 1.0 1.0 

4 1.0 1.0 1.0 1.0 

5 1.0 1.0 1.0 1.0 

6 2.0 2.0 2.0 2.0 

7 2.0 2.0 2.0 2.0 

8 2.0 2.0 2.0 2.0

join参数用法

df1 = pd.DataFrame(np.ones((3, 4))*0, columns=['a', 'b', 'c', 'd'], index=[1,2,3])
df2 = pd.DataFrame(np.ones((3, 4))*1, columns=['b', 'c', 'd', 'e'], index=[2,3,4])
# join默认为'outer',不共有的列用NaN填充
print pd.concat([df1, df2], join='outer') 
# join='inner'只合并共有的列
print pd.concat([df1, df2], join='inner')

输出 1 

a b c d e 

1 0.0 0.0 0.0 0.0 NaN 

2 0.0 0.0 0.0 0.0 NaN 

3 0.0 0.0 0.0 0.0 NaN 

2 NaN 1.0 1.0 1.0 1.0 

3 NaN 1.0 1.0 1.0 1.0 

4 NaN 1.0 1.0 1.0 1.0 

输出 2 

b c d 

1 0.0 0.0 0.0 

2 0.0 0.0 0.0 

3 0.0 0.0 0.0 

2 1.0 1.0 1.0 

3 1.0 1.0 1.0 

4 1.0 1.0 1.0

join_axes参数用法

df1 = pd.DataFrame(np.ones((3, 4))*0, columns=['a', 'b', 'c', 'd'], index=[1, 2, 3])
df2 = pd.DataFrame(np.ones((3, 4))*1, columns=['b', 'c', 'd', 'e'], index=[2, 3, 4])
# 按照df1的index进行合并
print pd.concat([df1, df2], axis=1, join_axes=[df1.index])

输出 

a b c d b c d e 

1 0.0 0.0 0.0 0.0 NaN NaN NaN NaN 

2 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 

3 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0

第五章 合并DataFrame
5.2 append函数

append多个DataFrame

df1 = pd.DataFrame(np.ones((3, 4))*0, columns=['a', 'b', 'c', 'd'])
df2 = pd.DataFrame(np.ones((3, 4))*1, columns=['a', 'b', 'c', 'd'])

print df1.append(df2, ignore_index=True)

输出 

a b c d 

0 0.0 0.0 0.0 0.0 

1 0.0 0.0 0.0 0.0 

2 0.0 0.0 0.0 0.0 

3 1.0 1.0 1.0 1.0 

4 1.0 1.0 1.0 1.0 

5 1.0 1.0 1.0 1.0

append一组数据

df1 = pd.DataFrame(np.ones((3, 4))*0, columns=['a', 'b', 'c', 'd'])
s = pd.Series([4, 4, 4, 4], index=['a', 'b', 'c', 'd'])

print df1.append(s, ignore_index=True)

输出 

第五章 合并DataFrame
5.3 merge函数

基于某一列进行合并

df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3'],
                    'B': ['B1', 'B2', 'B3'],
                   'KEY': ['K1', 'K2', 'K3']})
df2 = pd.DataFrame({'C': ['C1', 'C2', 'C3'],
                    'D': ['D1', 'D2', 'D3'],
                   'KEY': ['K1', 'K2', 'K3']})

print pd.merge(df1, df2, on='KEY')

输出 

基于某两列进行合并

df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3'],
                    'B': ['B1', 'B2', 'B3'],
                    'KEY1': ['K1', 'K2', 'K0'],
                    'KEY2': ['K0', 'K1', 'K3']})
df2 = pd.DataFrame({'C': ['C1', 'C2', 'C3'],
                    'D': ['D1', 'D2', 'D3'],
                    'KEY1': ['K0', 'K2', 'K1'],
                    'KEY2': ['K1', 'K1', 'K0']})
# how:['left','right','outer','inner']
print pd.merge(df1, df2, on=['KEY1', 'KEY2'], how='inner')

输出 

按index合并

df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3'],
                    'B': ['B1', 'B2', 'B3']},
                   index=['K0', 'K1', 'K2'])
df2 = pd.DataFrame({'C': ['C1', 'C2', 'C3'],
                    'D': ['D1', 'D2', 'D3']},
                   index=['K0', 'K1', 'K3'])

print pd.merge(df1, df2, left_index=True, right_index=True, how='outer')

输出 

为列加后缀

df_boys = pd.DataFrame({'id': ['1', '2', '3'],
                        'age': ['23', '25', '18']})
df_girls = pd.DataFrame({'id': ['1', '2', '3'],
                        'age': ['18', '18', '18']})

print pd.merge(df_boys, df_girls, on='id', suffixes=['_boys', '_girls'])

输出 

06

绘图

引入相应模块

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

绘制Series

data = pd.Series(np.random.randn(1000))
data = data.cumsum()

data.plot()
plt.show()

640?wx_fmt=png

2018/12/19

Wednesday

如小伙伴们,pandas是我们学习python、数据挖掘、数据分析、机器学习都离不开的库哦,看完这篇文章,是不是有所收获呢?后面还有系列文章连载,请记得关注哦!如果你有需要,就添加我的公众号哦,里面分享有海量资源,包含各类数据、教程等,后面会有更多面经、资料、数据集等各类干货等着大家哦,重要的是全都是免费、无套路分享,有兴趣的小伙伴请持续关注!

推 荐 阅 读

640?wx_fmt=gif

您的点赞和分享是我们进步的动力!

↘↘↘

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas是一种基于NumPy的数据分析工具,它可以帮助我们对数据进行清洗、编辑和分析等工作。掌握Pandas的常规用法是构建机器学习模型的第一步。首先,我们需要安装Pandas。如果已经安装了Anaconda,可以直接使用Anaconda自带的包管理工具来安装Pandas。如果没有安装Anaconda,可以使用Python自带的包管理工具pip来安装Pandas,命令为pip install pandas。安装完成后,我们可以导入Pandas库并查询相应的本信息。通常,我们还会导入NumPy库,因为Pandas和NumPy常常结合在一起使用。导入Pandas库的命令为import pandas as pd,导入NumPy库的命令为import numpy as np。要查询Pandas本信息,可以使用print(pd.__version__)命令。接下来,我们可以学习Pandas的数据类型,包括Series和DataFrame。Series是一种一维的数据结构,类似于数组或列表,而DataFrame是一种二维的数据结构,类似于表格。在学习Pandas的过程中,我们可以通过导入Excel数据、输出Excel数据、数据概览、数据查看、数据清洗、数据选择、数据排序、数据分组、数据透视、数据合并和数据可视化等操作来熟悉Pandas的用法。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [非常全面的Pandas入门教程](https://blog.csdn.net/weixin_44489066/article/details/89494395)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [pandas 快速入门教程](https://blog.csdn.net/down_12345/article/details/105345429)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值