Pandas教程(非常详细)(第五部分)

接着Pandas教程(非常详细)(第四部分),继续讲述。

二十五、Pandas sample随机抽样

随机抽样,是统计学中常用的一种方法,它可以帮助我们从大量的数据中快速地构建出一组数据分析模型。在 Pandas 中,如果想要对数据集进行随机抽样,需要使用 sample() 函数

sample() 函数的语法格式如下:

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

参数说明如下表所示:

参数名称 参数说明
n 表示要抽取的行数。
frac 表示抽取的比例,比如 frac=0.5,代表抽取总体数据的50%。
replace 布尔值参数,表示是否以有放回抽样的方式进行选择,默认为 False,取出数据后不再放回。
weights 可选参数,代表每个样本的权重值,参数值是字符串或者数组。
random_state 可选参数,控制随机状态,默认为 None,表示随机数据不会重复;若为 1 表示会取得重复数据。
axis 表示在哪个方向上抽取数据(axis=1 表示列/axis=0 表示行)。

该函数返回与数据集类型相同的新对象,相当于 numpy.random.choice()实例如下:

import pandas as pd
dict = {'name':["Jack", "Tom", "Helen", "John"],'age': [28, 39, 34, 36],'score':[98,92,91,89]}
info = pd.DataFrame(dict)
#默认随机选择两行
info.sample(n=2)
#随机选择两列
info.sample(n=2,axis=1)

输出结果:

   name age score

3 John   36    89

0 Jack    28    98

   score name

0   98    Jack

1   92    Tom

2   91   Helen

3   89    John

再来看一组示例:

import pandas as pd
info = pd.DataFrame({'data1': [2, 6, 8, 0], 'data2': [2, 5, 0, 8], 'data3': [12, 2, 1, 8]}, index=['John', 'Parker', 'Smith', 'William'])
info
#随机抽取3个数据
info['data1'].sample(n=3)
#总体的50%
info.sample(frac=0.5, replace=True)
#data3序列为权重值,并且允许重复数据出现
info.sample(n=2, weights='data3', random_state=1)

输出结果:

随机选择3行数据:

William 0

Smith 8

Parker 6

Name: data1, dtype: int64

         data1 data2 data3

John     2        2       12

William 0        8        8

          data1 data2 data3

John       2       2      12

William   0       8        8

二十六、Pandas resample数据重采样

数据重采样是将时间序列从一个频率转换至另一个频率的过程,它主要有两种实现方式,分别是降采样和升采样,降采样指将高频率的数据转换为低频率,升采样则与其恰好相反,说明如下:

方法 说明
降采样 将高频率(间隔短)数据转换为低频率(间隔长)。
升采样 将低频率数据转换为高频率。

Pandas 提供了 resample() 函数来实现数据的重采样。

1、降采样 resample()

通过 resample() 函数完成数据的降采样,比如按天计数的频率转换为按月计数。

import pandas as pd
import numpy as np
rng = pd.date_range('1/1/2021',periods=100,freq='D')
ts = pd.Series(np.random.randn(len(rng)),index=rng)
#降采样后并聚合
ts.resample('M').mean()

输出结果:

2021-01-31  0.210353

2021-02-28 -0.058859

2021-03-31 -0.182952

2021-04-30  0.205254

Freq: M, dtype: float64

如果您只想看到月份,那么您可以设置kind=period如下所示:

ts.resample('M',kind='period').mean()

输出结果:

2021-01 -0.153121

2021-02 0.136231

2021-03 -0.238975

2021-04 -0.309502

Freq: M, dtype: float64

2、升采样 asfreq()

升采样是将低频率(时间间隔)转换为高频率,示例如下:

import pandas as pd
import numpy as np
#生成一份时间序列数据
rng = pd.date_range('1/1/2021', periods=20, freq='3D')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
print(ts.head())
#使用asfreq()在原数据基础上实现频率转换
ts.resample('D').asfreq().head()

输出结果:

升采样前:

2021-01-01    0.608716

2021-01-04    1.097451

2021-01-07   -1.280173

2021-01-10   -0.175065

2021-01-13    1.046831

Freq: 3D, dtype: float64

升采样后:

2021-01-01    0.608716

2021-01-02         NaN

2021-01-03         NaN

2021-01-04    1.097451

2021-01-05         NaN

Freq: D, dtype: float64

3、频率转换 asfreq()

asfreq() 方法不仅能够实现频率转换,还可以保留原频率对应的数值,同时它也可以单独使用,示例如下:

index = pd.date_range('1/1/2021', periods=6, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0,4.0,5.0], index=index)
df = pd.DataFrame({'s':series})
print(df.asfreq("45s"))

输出结果:

                                  num

2021-01-01 00:00:00 0.0

2021-01-01 00:00:45 NaN

2021-01-01 00:01:30 NaN

2021-01-01 00:02:15 NaN

2021-01-01 00:03:00 3.0

2021-01-01 00:03:45 NaN

2021-01-01 00:04:30 NaN

4、插值处理

从上述示例不难看出,升采样的结果会产生缺失值,那么就需要对缺失值进行处理,一般有以下几种处理方式:

方法 说明
pad/ffill 前一个非缺失值去填充缺失值。
backfill/bfill 后一个非缺失值去填充缺失值。
interpolater('linear') 线性插值方法
fillna(value) 指定一个值去替换缺失值。

下面使用插值方法处理 NaN 值,示例如下:

import pandas as pd
import numpy as np
#创建时间序列数据
rng = pd.date_range('1/1/2021', periods=20, freq='3D')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
print(ts.resample('D').asfreq().head())
#使用ffill处理缺失值
ts.resample('D').asfreq().ffill().head()

输出结果:

2021-01-01 0.555580

2021-01-02 NaN

2021-01-03 NaN

2021-01-04 -0.079324

2021-01-05 NaN

Freq: D, dtype: float64

#插值处理,注意对比

2021-01-01 0.555580

2021-01-02 0.555580

2021-01-03 0.555580

2021-01-04 -0.079324

2021-01-05 -0.079324

Freq: D, dtype: float64

二十七、Python Pandas分类对象

通常情况下,数据集中会存在许多同一类别的信息,比如相同国家、相同行政编码、相同性别等,当这些相同类别的数据多次出现时,就会给数据处理增添许多麻烦,导致数据集变得臃肿,不能直观、清晰地展示数据。

针对上述问题,Pandas 提供了分类对象(Categorical Object),该对象能够实现有序排列、自动去重的功能,但是它不能执行运算。本节,我们了解一下分类对象的使用。

1、对象创建

我们可以通过多种方式创建分类对象,下面介绍以下两种方法:

(1) 指定dtype创建

import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
print(s)

输出结果:

0 a

1 b

2 c

3 a

dtype: category Categories (3, object): [a, b, c]

通过上述示例,您可能会注意到,虽然传递给 Series 四个元素值,但是它的类别为 3,这是因为 a 的类别存在重复。

(2) pd.Categorical

通过 Category  的构造函数,您可以创建一个类别对象。构造函数,如下所示:

pandas.Categorical(values, categories, ordered)

values:以列表的形式传参,表示要分类的值。
ordered:布尔值,默认为 False,若为 Ture,表示对分类的数据进行排序。
dtype:返回一个 category 类型,表示分类对象。

示例如下:

import pandas as pd
#自动按a、b、c分类
cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
print(cat)

输出结果:

[a, b, c, a, b, c]

Categories (3, object): [a, b, c]

再看一组示例:

import pandas as pd
cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'])
print(cat)

输出结果:

[a, b, c, a, b, c, NaN]

Categories (3, object): [c, b, a]

上述示例中,第二个参数值表示类别,当列表中不存在某一类别时,会自动将类别值设置为 NAN。

通过指定ordered=True来实现有序分类。示例如下:

import pandas as pd
cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'],ordered=True)
print(cat)
#求最小值
print(cat.min())

输出结果:

[a, b, c, a, b, c, NaN]

Categories (3, object): [c < b < a] c

2、获取统计信息 describe()

对已经分类的数据使用 describe() 方法,您会得到和数据统计相关的摘要信息。

import pandas as pd
import numpy as np
cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
df = pd.DataFrame({"cat":cat, "s":["a", "c", "c", np.nan]})
print(df.describe())
print(df["cat"].describe())

输出结果:

         cat  s

count  3   3

unique 2  2

top       c   c

freq     2  2

count    3

unique  2

top        c

freq       2

Name: cat, dtype: object

3、获取类别属性 obj.categories

使用obj.categories命令可以获取对象的类别信息。示例如下:

import pandas as pd
import numpy as np
s = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print (s.categories)

输出结果:

Index(['b', 'a', 'c'], dtype='object')

通过 obj.order 可以获取 order 指定的布尔值

import pandas as pd
import numpy as np
cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
#False表示未指定排序
print (cat.ordered)

输出结果:

False

4、重命名类别 Series.cat.categories

要想对类别实现重命名,可以通过 Series.cat.categories 来实现的,示例如下:

import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
#对类名重命名
s.cat.categories = ["Group %s" % g for g in s.cat.categories]
print(s.cat.categories)

输出结果:

Index(['Group a', 'Group b', 'Group c'], dtype='object')

5、追加新类别 s.cat.add_categories()

使用 s.cat.add_categories() 方法,可以追加新类别。

import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
#追加新类别
s = s.cat.add_categories([5])
#查看现有类别
print(s.cat.categories)

输出结果:

Index(['a', 'b', 'c', 5], dtype='object')

6、删除类别  remove_categories()

使用 remove_categories() 方法,可以删除不需要的类别。示例如下:

import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
#原序列
print(s)
#删除后序列
print(s.cat.remove_categories("a"))

输出结果:

0 a

1 b

2 c

3 a

dtype: category

Categories (3, object): [a, b, c]

0 NaN

1 b

2 c

3 NaN

dtype: category

Categories (2, object): [b, c]

7、分类对象比较

在下述两种情况下,我们可以对分类对象进行比较:

  • 当两个类别对象长度相同时,可以进行比较运算;
  • 当两个类别的 ordered 均等于 True,并且类别相同时,可以进行比较运算,比如 ==,!=,>,>=,< 和 <=。

示例如下:

import pandas as pd
s1=['a','a','b','d','c']
#当满足两个类别长度相同时
ss0=pd.Categorical(s1,categories=['a','d','b','c'])
ss1 = pd.Categorical(s1)
print(ss0==ss1)

输出结果:

array([ True, True, True, True, True])

这里ss0输出:['a','a','b','d','c'],Categories (4, object): ['a','d','b','c']

这里ss1输出:['a','a','b','d','c'],Categories (4, object): ['a','b','d','c']

示例如下:

import pandas as pd
s1=['a','a','b','d','c']
s2=['a','b','b','d','c']
#满足上述第二个条件,类别相同,并且ordered均为True
ss0=pd.Categorical(s1,categories=['a','d','b','c'],ordered=True)
ss1 = pd.Categorical(s2,categories=['a','d','b','c'],ordered=True)
print(ss0

输出结果:

array([False, True, False, False, False])

二十八、Python Pandas绘图教程

Pandas 在数据分析、数据可视化方面有着较为广泛的应用,Pandas 对 Matplotlib 绘图软件包的基础上单独封装了一个plot()接口,通过调用该接口可以实现常用的绘图操作。本节我们深入讲解一下 Pandas 的绘图操作。

Pandas 之所以能够实现了数据可视化,主要利用了 Matplotlib 库的 plot() 方法,它对 plot() 方法做了简单的封装,因此您可以直接调用该接口。下面看一组简单的示例:

import pandas as pd
import numpy as np
#创建包含时间序列的数据
df = pd.DataFrame(np.random.randn(8,4),index=pd.date_range('2/1/2020',periods=8), columns=list('ABCD'))
df.plot()

输结果图,如下所示:

Pandas教程(非常详细)(第五部分)_第1张图片

图1:Pandas绘图

如上图所示,如果行索引中包含日期,Pandas 会自动调用 gct().autofmt_xdate() 来格式化 x 轴

除了使用默认的线条绘图外,您还可以使用其他绘图方式,如下所示:

  • 柱状图:bar() 或 barh()
  • 直方图:hist()
  • 箱状箱:box()
  • 区域图:area()
  • 散点图:scatter()

通过关键字参数kind可以把上述方法传递给 plot()。

1、柱状图 df.plot.bar()

创建一个柱状图,如下所示:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d','e'])
#或使用df.plot(kind="bar")
df.plot.bar()

输出结果:

Pandas教程(非常详细)(第五部分)_第2张图片

图2:Pandas绘制柱状图

通过设置参数stacked=True可以生成柱状堆叠图,示例如下:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,5),columns=['a','b','c','d','e'])
df.plot(kind="bar",stacked=True)
#或者使用df.plot.bar(stacked="True")

输出结果:

Pandas教程(非常详细)(第五部分)_第3张图片

图3:Pandas绘制柱状图

如果要绘制水平柱状图,您可以使用以下方法:df.plot.barh()

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
print(df)
df.plot.barh(stacked=True)

输出结果:

Pandas教程(非常详细)(第五部分)_第4张图片

图4:水平柱状图

2、直方图 plot.hist()

 plot.hist() 可以实现绘制直方图,并且它还可以指定 bins(构成直方图的箱数)。

import pandas as pd
import numpy as np
df = pd.DataFrame({'A':np.random.randn(100)+2,'B':np.random.randn(100),'C':
np.random.randn(100)-2}, columns=['A', 'B', 'C'])
print(df)
#指定箱数为15
df.plot.hist(bins=15)

输出结果:

Pandas教程(非常详细)(第五部分)_第5张图片

图5:绘制直方图

每一列数据都绘制一个直方图,需要使以下方法:df.diff().hist()

import pandas as pd
import numpy as np
df = pd.DataFrame({'A':np.random.randn(100)+2,'B':np.random.randn(100),'C':
np.random.randn(100)-2,'D':np.random.randn(100)+3},columns=['A', 'B', 'C','D'])
#使用diff绘制
df.diff().hist(color="r",alpha=0.5,bins=15)

输出结果:

Pandas教程(非常详细)(第五部分)_第6张图片

图6:直方图绘制

3、箱型图 box.plot()/boxplot()

通过调用 Series.box.plot() 、DataFrame.box.plot() 或者 DataFrame.boxplot() 方法来绘制箱型图,它将每一列数据的分布情况,以可视化的图像展现出来。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 4), columns=['A', 'B', 'C', 'D'])
df.plot.box()

输出结果:

Pandas教程(非常详细)(第五部分)_第7张图片

图7:绘制箱型图

4、区域图 plot.area()

您可以使用 Series.plot.area() 或 DataFrame.plot.area() 方法来绘制区域图。

import pandas as pd
import numpy as np

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

输出结果:

Pandas教程(非常详细)(第五部分)_第8张图片

图8:绘制区域图

5、散点图 plot.scatter()

使用 DataFrame.plot.scatter() 方法来绘制散点图,如下所示:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(30, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a',y='b')

输出结果:

Pandas教程(非常详细)(第五部分)_第9张图片

图9:绘制散点图

6、饼状图 plot.pie()

饼状图可以通过 DataFrame.plot.pie() 方法来绘制。示例如下:

import pandas as pd
import numpy as np
df = pd.DataFrame(3 * np.random.rand(4), index=['go', 'java', 'c++', 'c'], columns=['L'])
df.plot.pie(subplots=True)

输出结果:

Pandas教程(非常详细)(第五部分)_第10张图片

图10:Pandas绘制饼状图

二十九、Python Pandas读取文件

当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda 提供了多种读取数据的方法:

  • read_csv() 用于读取文本文件
  • read_json() 用于读取 json 文件
  • read_sql_query() 读取 sql 语句的

本节将对上述方法做详细介绍。

1、CSV文件读取

CSV 又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据。 CSV 文件能够以纯文本形式存储表格数据,比如电子表格、数据库文件,并具有数据交换的通用格式。CSV 文件会在 Excel 文件中被打开,其行和列都定义了标准的数据格式。

将 CSV 中的数据转换为 DataFrame 对象是非常便捷的。和一般文件读写不一样,它不需要你做打开文件、读取文件、关闭文件等操作。相反,您只需要一行代码就可以完成上述所有步骤,并将数据存储在 DataFrame 中。

下面进行实例演示,首先您需要创建一组数据,并将其保存为 CSV 格式,数据如下:

Name,Hire Date,Salary,Leaves Remaining

John Idle,08/15/14,50000.00,10

Smith Gilliam,04/07/15,65000.00,6

Parker Chapman,02/21/14,45000.00,7

Jones Palin,10/14/13,70000.00,3

Terry Gilliam,07/22/14,48000.00,9

Michael Palin,06/28/13,66000.00,8

注意:将上述数据保存到.txt的文本文件中,然后将文件的扩展名后缀修改为 csv,即可完成 csv 文件的创建。

接下来,我们使用下列代码读写数据: read_csv()

import pandas
#仅仅一行代码就完成了数据读取,但是注意文件路径不要写错
df = pandas.read_csv('C:/Users/Administrator/Desktop/hrd.csv')
print(df)

输出结果:

   Name                  Hire Date     Salary     Leaves Remaining

0 John Idle              08/15/14      50000.0               10

1 Smith Gilliam        04/07/15      65000.0                6

2 Parker Chapman  02/21/14      45000.0                7

3 Jones Palin          10/14/13      70000.0                 3

4 Terry Gilliam         07/22/14      48000.0                 9

5 Michael Palin        06/28/13      66000.0                 8

在下一节会对 read_csv() 函数做详细讲解。

2、json读取文件   read_csv()

您可以通过下列方法来读取一个 json 文件,如下所示:

import pandas as pd
data = pd.read_json('C:/Users/Administrator/Desktop/hrd.json')
print(data)

输出结果:

   Name                  Hire Date     Salary     Leaves Remaining

0 John Idle              08/15/14      50000.0               10

1 Smith Gilliam        04/07/15      65000.0                6

2 Parker Chapman  02/21/14      45000.0                7

3 Jones Palin          10/14/13      70000.0                 3

4 Terry Gilliam         07/22/14      48000.0                 9

5 Michael Palin        06/28/13      66000.0                 8

3、SQL数据库读取

如果想要从 SQL 数据库读取数据,首您应该使用 Python 和数据库建立连接,然后将查询语句传递给 read_sql_query() 方法,下面做简单地演示:

(1) 安装pysqlite3模块

pip install pysqlite3

(2) 建立数据连接

import sqlite3 
con = sqlite3.connect("database.db")

(3) 数据库读取数据

在 SQLite 数据库中创建一张信息表,您可以随意添加一些信息,最后使用下列方法读取数据即可:

#con参数指定操作数据库的引擎,可以指定,也可默认
df = pd.read_sql_query("SELECT * FROM information",con) 

三十、Pandas csv读写文件

二十九节中,我们讲解了多种用 Pandas 读写文件的方法。本节我们讲解如何应用这些方法 。

我们知道,文件的读写操作属于计算机的 IO 操作,Pandas IO 操作提供了一些读取器函数,比如 pd.read_csv()、pd.read_json 等,它们都返回一个 Pandas 对象。

在 Pandas 中用于读取文本的函数有两个,分别是: read_csv() 和 read_table() ,它们能够自动地将表格数据转换为 DataFrame 对象。其中 read_csv 的语法格式,如下:

pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',names=None, index_col=None, usecols=None)

下面,新建一个 txt 文件,并添加以下数据:

ID,Name,Age,City,Salary

1,Jack,28,Beijing,22000

2,Lida,32,Shanghai,19000

3,John,43,Shenzhen,12000

4,Helen,38,Hengshui,3500

txt 文件另存为 person.csv 文件格式,直接修改文件扩展名即可。接下来,对此文件进行操作。

1、read_csv()

read_csv() 表示从 CSV 文件中读取数据,并创建 DataFrame 对象。

import pandas as pd
#需要注意文件的路径
df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv")
print (df)

输出结果:

  ID Name Age City Salary

0 1 Jack     28 Beijing 22000

1 2 Lida      32 Shanghai 19000

2 3 John     43 Shenzhen 12000

3 4 Helen   38 Hengshui 3500

(1) 自定义索引

在 CSV 文件中指定了一个列,然后使用index_col可以实现自定义索引。

import pandas as pd
df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",index_col=['ID'])
print(df)

输出结果:

ID   Name   Age  City       Salary

1    Jack     28 Beijing       22000

 2   Lida      32 Shanghai  19000

3    John     43 Shenzhen 12000

4    Helen   38 Hengshui    3500

(2) 查看每一列的dtype

import pandas as pd
#转换salary为float类型
df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",dtype={'Salary':np.float64})
print(df.dtypes)

输出结果:

ID int64

Name object

Age int64

City object

Salary float64

dtype: object

注意:默认情况下,Salary 列的 dtype 是 int 类型,但结果显示其为 float 类型,因为我们已经在上述代码中做了类型转换。

(3) 更改文件标头名

使用 names 参数可以指定头文件的名称。

import pandas as pd
df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",names=['a','b','c','d','e'])
print(df)

输出结果:

     a    b       c      d       e

   ID Name Age City Salary

0 1 Jack     28 Beijing 22000

1 2 Lida      32 Shanghai 19000

2 3 John     43 Shenzhen 12000

3 4 Helen   38 Hengshui 3500

注意:文件标头名是附加的自定义名称但是您会发现,原来的标头名(列标签名)并没有被删除,此时您可以使用header参数来删除它。

通过传递标头所在行号实现删除,如下所示:

import pandas as pd
df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",names=['a','b','c','d','e'],header=0)
print(df)

输出结果:

   a    b         c       d         e

0 1 Jack     28 Beijing 22000

1 2 Lida      32 Shanghai 19000

2 3 John     43 Shenzhen 12000

3 4 Helen   38 Hengshui 3500

假如原标头名并没有定义在第一行,您也可以传递相应的行号来删除它。

(4) 跳过指定的行数

skiprows参数表示跳过指定的行数。

import pandas as pd
df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",skiprows=2)
print(df)

输出结果:

   2 Lida      32 Shanghai 19000

0 3 John     43 Shenzhen 12000

1 4 Helen   38 Hengshui    3500

注意:包含标头所在行。

2、to_csv()

Pandas 提供的 to_csv() 函数用于将 DataFrame 转换为 CSV 数据。如果想要把 CSV 数据写入文件,只需向函数传递一个文件对象即可。否则,CSV 数据将以字符串格式返回。

下面看一组简单的示例:

import pandas as pd
data = {'Name': ['Smith', 'Parker'], 'ID': [101, 102], 'Language': ['Python', 'JavaScript']}
info = pd.DataFrame(data)
print('DataFrame Values:\n', info)
#转换为csv数据
csv_data = info.to_csv()
print('\nCSV String Values:\n', csv_data)

输出结果:

DataFrame:

    Name   ID   Language

0 Smith   101   Python

1 Parker 102   JavaScript

csv数据:

  ,Name,ID,Language

0,Smith,101,Python

1,Parker,102,JavaScript

指定 CSV 文件输出时的分隔符,并将其保存在 pandas.csv 文件中,代码如下:

import pandas as pd
#注意:pd.NaT表示null缺失数据
data = {'Name': ['Smith', 'Parker'], 'ID': [101, pd.NaT], 'Language': ['Python', 'JavaScript']}
info = pd.DataFrame(data)
csv_data = info.to_csv("C:/Users/Administrator/Desktop/pandas.csv",sep='|')

后续内容将在Pandas教程(非常详细)(第六部分),继续讲述。

你可能感兴趣的:(Python语言学习,pandas)