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

news2024/11/17 16:48:36

接着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<ss1)

输出结果:

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 matplotlib

图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 bar()

图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 bar()

图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)

输出结果:

水平柱状图

图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:绘制直方图

每一列数据都绘制一个直方图,需要使以下方法: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)

输出结果:

直方图

图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()

输出结果:

箱型图绘制

图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()

输出结果:

绘制区域图

图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')

输出结果:

散点图

图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)

输出结果:

饼状图

图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教程(非常详细)(第六部分),继续讲述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1201674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.5 CE修改器:寻找数值指针

上一步阐述了如何使用代码替换功能对付变化位置的数据地址&#xff0c;但这种方法往往不能达到预期的效果&#xff0c;所以我们需要学习如何利用指针&#xff0c;在本关的Tutorial.exe窗口下面有两个按钮&#xff0c;一个会改变数值&#xff0c;另一个不但能改变数值而且还会改…

初始MySQL(四)(查询加强练习,多表查询)

目录 查询加强 where加强 order by加强 group by 分页查询 总结 多表查询(重点) 笛卡尔集及其过滤 自连接 子查询 子查询当作临时表 all/any 多列子查询 #先创建三张表 #第一张表 CREATE TABLE dept(deptno MEDIUMINT NOT NULL DEFAULT 0,dname VARCHAR(20) NOT …

js随机生成颜色

封装一个函数 返回一个随机颜色 不传参数或者传true返回十六进制&#xff0c; 传false返回rgb模式 script>function Random(n, m) {if (n > m) {let temp nn mm temp}return Math.floor(Math.random() * (m - n 1)) n}function getRandomColor(flag true) {if (fl…

力扣第647题 回文子串 c++ 动态规划 双指针 附Java代码 注释解释版

题目 647. 回文子串 中等 相关标签 字符串 动态规划 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串…

【中国知名企业高管团队】系列66:老板ROBAM

昨天华研荟为您介绍了厨电领域的TOP企业——方太FOTILE的发展历程&#xff0c;以及作为企一代茅理翔和企二代茅忠群的创业故事。 今天为您介绍同处浙江的老板电器。 一、关于老板电器 以下内容来自老板电器官网介绍&#xff1a; 杭州老板电器股份有限公司创立于1979年&…

学校教的Python根本不够!来看看Python学习路线图

如果只靠学校学的东西去找工作&#xff0c;能找到工作吗&#xff1f; 今天给大家看一个粉丝的真实求职案例&#xff0c;想做Python方面的工作&#xff0c;投了二十几个简历却没人要&#xff0c;心态崩了。为什么没人要&#xff1f;我来告诉你答案。 然后我还会结合我的这些年的…

软件开发项目文档系列之十六如何撰写系统运维方案

前言 项目运维方案是为了确保项目的稳定运行和可持续发展而制定的指导性文档。本文将详细介绍项目运维方案的各个方面&#xff0c;包括硬件和软件基础设施、监控和警报、备份和恢复、安全性、团队组织和沟通等方面。本博客将提供示例和最佳实践&#xff0c;以帮助您更好地理解…

AIGC实战——自编码器(Autoencoder)

AIGC实战——自编码器 0. 前言1. 自编码器原理2. 数据集与模型分析2.1 Fashion-MNIST 数据集2.2 自编码器架构 3. 去噪自编码器3.1 编码器3.2 解码器3.3 连接编码器和解码器3.4 训练自编码器3.5 重建图像 4. 可视化潜空间5. 生成新图像小结系列链接 0. 前言 自编码器 (Autoenc…

【Recap教程】autodesk recap软件的安装、认识与使用

一、autodesk recap概述 1. recap介绍 Autodesk Recap是一款由Autodesk公司推出的三维扫描软件,它能够转换多种数据源(如点云、激光雷达、照片)为可视的三维模型。该软件的使用使得用户可以更容易地生成高质量、完整的三维模型。Autodesk Recap通常用于建筑、土木工程、汽…

④【数据查询】MySQL查询语句,拿来即用。

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ MySQL查询操作 ④【数据查询】MySQL查询语句&a…

【框架篇】统一异常处理

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 1&#xff0c;统一异常处理的介绍 统⼀异常处理使⽤的是 ControllerAdvice ExceptionHandler 来…

2023-11-13 LeetCode每日一题(区域和检索 - 数组可修改)

2023-11-13每日一题 一、题目编号 307. 区域和检索 - 数组可修改二、题目链接 点击跳转到题目位置 三、题目描述 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 更新 数组 nums 下标对应的值另一类查询要求返回数组 nums 中索引 left 和索引 right…

一文读懂RestCloud AppLink

RestCloud AppLink是什么&#xff1f; RestCloud AppLink 是一种应用程序集成解决方案&#xff0c;它提供了一套工具和技术&#xff0c;用于实现不同应用程序之间的无缝集成和交互。平台旨在解决企业中应用程序之间数据孤岛、信息孤立和业务流程不畅的问题&#xff0c;提高企业…

Python - GFPGAN + MoviePy 提高人物视频画质

目录 一.引言 二.gif_to_png 三.gfp_gan 四.png_to_gif 五.总结 一.引言 前面我们介绍了 GFP-GAN 提高人脸质量 与 OCR 提取视频台词、字幕&#xff0c;前者可以提高图像质量&#xff0c;后者可以从视频中抽帧&#xff0c;于是博主便想到了将二者进行结合并优化人物 GIF …

matlab直线一级倒立摆lqr控制

1、内容简介 略 16-可以交流、咨询、答疑 matlab直线一级倒立摆lqr控制 2、内容说明 倒立摆是一个开环不稳定的强非线性系统&#xff0c;其控制策略与杂技运动员顶杆平衡表演的技巧有异曲同工之处&#xff0c;目的在于使得摆杆处于临界稳定状态&#xff0c;是进行控制理论研…

番外 1 : Java 环境下的 selenium 搭建

Java 环境下的 selenium 搭建 一 . 下载谷歌浏览器二 . 下载谷歌浏览器驱动2.1 查看谷歌浏览器版本2.2 下载对应版本的谷歌驱动2.3 解压下载好的驱动压缩包 , 将下载好的 chromedriver.exe 放到java 系统环境变量下 三 . 下载 Edge 浏览器的驱动3.1 查看 Edge 浏览器的版本3.2 …

欧易python控盘脚本(初级)

欧易python控盘脚本 文章目录 欧易python控盘脚本一、官网API使用介绍二、查看组1、查看市场行情2、查看账户余额3、订单查询 三、交易组1、市价购买2、限价购买 一、官网API使用介绍 https://www.okx.com/cn/help/how-can-i-do-spot-trading-with-the-jupyter-notebook 二、…

哨兵1号回波数据(L0级)产品目录介绍

1 数据包总览 哨兵1号L0级数据产品系列如下图所示&#xff0c;本文针对图中红框中的数据产品进行介绍&#xff08;定标数据、噪声数据没下载到。。。&#xff09;。 1.1 数据包名称 示例&#xff1a; S1A_S3_RAW__0SSV_20211230T105851_20211230T105907_041237_04E698_94F0.S…

Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Spring Cloud OpenFeign&#xff1a;基于Ribbon和Hystrix的声明式服务调用 Spring Cloud OpenFeign是一个声明式的服务调用框架&#xff0c;基于Feign并整合了Ribbon和…

Qt文档阅读笔记-Fetch More Example解析

Fetch More Example这个例子说明了如何在视图模型上添加记录。 这个例子由一个对话框组成&#xff0c;在Directory的输入框中&#xff0c;可输入路径信息。应用程序会载入路径信息的文件信息等。不需要按回车键就能搜索。 当有大量数据时&#xff0c;需要对视图模型进行批量增…