Python 数据分析三剑客之 Pandas(十):数据读写

CSDN 课程推荐:《迈向数据科学家:带你玩转Python数据分析》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实战》、《跟老齐学Python:数据分析》和《Python大学实用教程》畅销图书。


Pandas 系列文章:

  • Python 数据分析三剑客之 Pandas(一):认识 Pandas 及其 Series、DataFrame 对象
  • Python 数据分析三剑客之 Pandas(二):Index 索引对象以及各种索引操作
  • Python 数据分析三剑客之 Pandas(三):算术运算与缺失值的处理
  • Python 数据分析三剑客之 Pandas(四):函数应用、映射、排序和层级索引
  • Python 数据分析三剑客之 Pandas(五):统计计算与统计描述
  • Python 数据分析三剑客之 Pandas(六):GroupBy 数据分裂、应用与合并
  • Python 数据分析三剑客之 Pandas(七):合并数据集
  • Python 数据分析三剑客之 Pandas(八):数据重塑、重复数据处理与数据替换
  • Python 数据分析三剑客之 Pandas(九):时间序列
  • Python 数据分析三剑客之 Pandas(十):数据读写

另有 NumPy、Matplotlib 系列文章已更新完毕,欢迎关注:

  • NumPy 系列文章:https://itrhx.blog.csdn.net/category_9780393.html
  • Matplotlib 系列文章:https://itrhx.blog.csdn.net/category_9780418.html

推荐学习资料与网站(博主参与部分文档翻译):

  • NumPy 官方中文网:https://www.numpy.org.cn/
  • Pandas 官方中文网:https://www.pypandas.cn/
  • Matplotlib 官方中文网:https://www.matplotlib.org.cn/
  • NumPy、Matplotlib、Pandas 速查表:https://github.com/TRHX/Python-quick-reference-table

文章目录

    • 【01x00】读取数据
      • 【01x01】简单示例
      • 【01x02】header / names 定制列标签
      • 【01x03】index_col 指定列为行索引
      • 【01x04】sep 指定分隔符
      • 【01x05】skiprows 忽略行
      • 【01x06】na_values 设置缺失值
      • 【01x07】nrows / chunksize 行与块
    • 【02x00】写入数据
      • 【02x01】简单示例
      • 【02x02】sep 指定分隔符
      • 【02x03】na_rep 替换缺失值
      • 【02x04】index / header 行与列标签
      • 【02x05】columns 指定列


这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/106963135
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

【01x00】读取数据

Pandas 提供了一些用于将表格型数据读取为 DataFrame 对象的函数。常见方法如下:

Pandas 官方对 IO 工具的介绍:https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html

函数描述
read_csv从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号
read_table从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符('\t'
read_fwf读取定宽列格式数据(没有分隔符)
read_clipboard读取剪贴板中的数据,可以看做 read_table 的剪贴板版本。在将网页转换为表格时很有用
read_excel从 Excel XLS 或 XLSX file 读取表格数据
read_hdf读取 pandas写的 HDF5 文件
read_html读取 HTML 文档中的所有表格
read_json读取 JSON( JavaScript Object Notation)字符串中的数据
read_msgpack读取二进制格式编码的 pandas 数据(Pandas v1.0.0 中已删除对 msgpack 的支持,建议使用 pyarrow)
read_pickle读取 Python pickle 格式中存储的任意对象
read_sas读取存储于 SAS 系统自定义存储格式的 SAS 数据集
read_sql(使用 SQLAlchemy)读取 SQL 查询结果为 pandas 的 DataFrame
read_stata读取 Stata 文件格式的数据集
read_feather读取 Feather 二进制格式文件

以下以 read_csv 和 read_table 为例,它们的参数多达 50 多个,具体可参见官方文档:

read_csv:https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

read_table:https://pandas.pydata.org/docs/reference/api/pandas.read_table.html

常用参数:

参数描述
path表示文件系统位置、URL、文件型对象的字符串
sep / delimiter用于对行中各字段进行拆分的字符序列或正则表达式
header用作列名的行号,默认为 0(第一行),如果没有 header 行就应该设置为 None
index_col用作行索引的列编号或列名。可以是单个名称、数字或由多个名称、数字组成的列表(层次化索引)
names用于结果的列名列表,结合 header=None
skiprows需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)
na_values指定一组值,将该组值设置为 NaN(缺失值)
comment用于将注释信息从行尾拆分出去的字符(一个或多个)
parse_dates尝试将数据解析为日期,默认为 False。如果为 True,则尝试解析所有列。此外,还可以指定需要解析的一组列号或列名。
如果列表的元素为列表或元组,就会将多个列组合到一起再进行日期解析工作(例如,日期、时间分别位于两个列中)
keep_date_col如果连接多列解析日期,则保持参与连接的列。默认为 False
converters由列号 / 列名跟函数之间的映射关系组成的字典。例如,{'foo': f} 会对 foo 列的所有值应用函数 f
dayfirst当解析有歧义的日期时,将其看做国际格式(例如,7/6/2012 —> June 7,2012),默认为 Fase
date_parser用于解析日期的函数
nrows需要读取的行数(从文件开始处算起)
iterator返回一个 TextParser 以便逐块读取文件
chunksize文件块的大小(用于迭代)
skip_footer需要忽略的行数(从文件末尾处算起)
verbose打印各种解析器输出信息,比如“非数值列中缺失值的数量”等
encoding用于 unicode 的文本编码格式。例如,“utf-8” 表示用 UTF-8 编码的文本
squeeze如果数据经解析后仅含一列,则返回 Series
thousands千分位分隔符,如 ,.

【01x01】简单示例

首先创建一个 test1.csv 文件:

01

使用 read_csv 方法将其读出为一个 DataFrame 对象:

>>> import pandas as pd
>>> obj = pd.read_csv(r'C:\Users\TanRe\Desktop\test1.csv')
>>> obja   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12  python
>>> 
>>> type(obj)
<class 'pandas.core.frame.DataFrame'>

前面的 csv 文件是以逗号分隔的,可以使用 read_table 方法并指定分隔符来读取:

>>> import pandas as pd
>>> obj = pd.read_table(r'C:\Users\TanRe\Desktop\test1.csv', sep=',')
>>> obja   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12  python

【01x02】header / names 定制列标签

以上示例中第一行为列标签,如果没有单独定义列标签,使用 read_csv 方法也会默认将第一行当作列标签:

02

>>> import pandas as pd
>>> obj = pd.read_csv(r'C:\Users\TanRe\Desktop\test2.csv')
>>> obj1   2   3   4   hello
0  5   6   7   8   world
1  9  10  11  12  python

避免以上情况,可以设置 header=None,Pandas 会为其自动分配列标签:

>>> import pandas as pd
>>> pd.read_csv(r'C:\Users\TanRe\Desktop\test2.csv', header=None)0   1   2   3       4
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12  python

也可以使用 names 参数自定义列标签,传递的是一个列表:

>>> import pandas as pd
>>> pd.read_csv(r'C:\Users\TanRe\Desktop\test2.csv', names=['a', 'b', 'c', 'd', 'message'])a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12  python

【01x03】index_col 指定列为行索引

index_col 参数可以指定某一列作为 DataFrame 的行索引,传递的参数是列名称,在以下示例中,会将列名为 message 的列作为 DataFrame 的行索引:

02

>>> pd.read_csv(r'C:\Users\TanRe\Desktop\test2.csv', names=['a', 'b', 'c', 'd', 'message'], index_col='message')a   b   c   d
message               
hello    1   2   3   4
world    5   6   7   8
python   9  10  11  12

如果需要构造多层索引的 DataFrame 对象,则只需传入由列编号或列名组成的列表即可:

03

>>> import pandas as pd
>>> pd.read_csv(r'C:\Users\TanRe\Desktop\test3.csv', index_col=['key1', 'key2'])value1  value2
key1 key2                
one  a          1       2b          3       4c          5       6d          7       8
two  a          9      10b         11      12c         13      14d         15      16

【01x04】sep 指定分隔符

在 read_table 中,sep 参数用于接收分隔符,如果遇到不是用固定的分隔符去分隔字段的,也可以传递一个正则表达式作为 read_table 的分隔符,如下面的 txt 文件数据之间是由不同的空白字符间隔开的:

04

>>> import pandas as pd
>>> pd.read_table(r'C:\Users\TanRe\Desktop\test1.txt', sep='\s+')A         B         C
aaa -0.264438 -1.026059 -0.619500
bbb  0.927272  0.302904 -0.032399
ccc -0.264273 -0.386314 -0.217601
ddd -0.871858 -0.348382  1.100491

【01x05】skiprows 忽略行

skiprows 参数可用于设置需要忽略的行数,或需要跳过的行号列表,在下面的示例中,读取文件时选择跳过第1、3、4行(索引值分别为0、2、3):

05

>>> import pandas as pd
>>> pd.read_csv(r'C:\Users\TanRe\Desktop\test4.csv', skiprows=[0, 2, 3])a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12  python

【01x06】na_values 设置缺失值

当文件中出现了空字符串或者 NA 值,Pandas 会将其标记成 NaN(缺失值),同样也可以使用 isnull 方法来判断结果值是否为缺失值:

06

>>> import pandas as pd
>>> obj = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv')
>>> objsomething  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12  python
>>> 
>>> pd.isnull(obj)something      a      b      c      d  message
0      False  False  False  False  False     True
1      False  False  False   True  False    False
2      False  False  False  False  False    False

na_values 方法可以传递一组值,将这组值设置为缺失值,如果传递的为字典对象,则字典的各值将被设置为 NaN:

>>> import pandas as pd
>>> obj1 = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv')
>>> obj1something  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12  python
>>> 
>>> obj2 = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv', na_values=['1', '12'])
>>> obj2something    a   b     c    d message
0       one  NaN   2   3.0  4.0     NaN
1       two  5.0   6   NaN  8.0   world
2     three  9.0  10  11.0  NaN  python
>>> 
>>> sentinels = {'message': ['python', 'world'], 'something': ['two']}
>>> obj3 = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv', na_values=sentinels)
>>> obj3something  a   b     c   d  message
0       one  1   2   3.0   4      NaN
1       NaN  5   6   NaN   8      NaN
2     three  9  10  11.0  12      NaN

【01x07】nrows / chunksize 行与块

以下 test6.csv 文件中包含 50 行数据:

07

可以设置 pd.options.display.max_rows 来紧凑地显示指定行数的数据:

>>> import pandas as pd
>>> pd.options.display.max_rows = 10
>>> pd.read_csv(r'C:\Users\TanRe\Desktop\test6.csv')one       two     three      four key
0   0.467976 -0.038649 -0.295344 -1.824726   L
1  -0.358893  1.404453  0.704965 -0.200638   B
2  -0.501840  0.659254 -0.421691 -0.057688   G
3   0.204886  1.074134  1.388361 -0.982404   R
4   0.354628 -0.133116  0.283763 -0.837063   Q
..       ...       ...       ...       ...  ..
45  2.311896 -0.417070 -1.409599 -0.515821   L
46 -0.479893 -0.633419  0.745152 -0.646038   E
47  0.523331  0.787112  0.486066  1.093156   K
48 -0.362559  0.598894 -1.843201  0.887292   G
49 -0.096376 -1.012999 -0.657431 -0.573315   0[50 rows x 5 columns]

通过 nrows 参数可以读取指定行数:

>>> import pandas as pd
>>> pd.read_csv(r'C:\Users\TanRe\Desktop\test6.csv', nrows=5)one       two     three      four key
0  0.467976 -0.038649 -0.295344 -1.824726   L
1 -0.358893  1.404453  0.704965 -0.200638   B
2 -0.501840  0.659254 -0.421691 -0.057688   G
3  0.204886  1.074134  1.388361 -0.982404   R
4  0.354628 -0.133116  0.283763 -0.837063   Q

要逐块读取文件,可以指定 chunksize(行数):

>>> import pandas as pd
>>> chunker = pd.read_csv(r'C:\Users\TanRe\Desktop\test6.csv', chunksize=50)
>>> chunker
<pandas.io.parsers.TextFileReader object at 0x07A20D60>

返回的 TextParser 对象,可以根据 chunksize 对文件进行逐块迭代。以下示例中,对 test6.csv 文件数据进行迭代处理,将值计数聚合到 “key” 列中:

>>> import pandas as pd
>>> chunker = pd.read_csv(r'C:\Users\TanRe\Desktop\test6.csv', chunksize=50)
>>> tot = pd.Series([], dtype='float64')
>>> for piece in chunker:tot = tot.add(piece['key'].value_counts(), fill_value=0)>>> tot = tot.sort_values(ascending=False)
>>> tot[:10]
G    6.0
E    5.0
B    5.0
L    5.0
0    5.0
K    4.0
A    4.0
R    4.0
C    2.0
Q    2.0
dtype: float64

这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/106963135
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

【02x00】写入数据

Pandas 提供了一些用于将表格型数据读取为 DataFrame 对象的函数。常见方法如下:

函数描述
to_csv将对象写入逗号分隔值(csv)文件
to_clipboard将对象复制到系统剪贴板
to_excel将对象写入 Excel 工作表
to_hdf使用 HDFStore 将包含的数据写入 HDF5 文件
to_html将 DataFrame 呈现为 HTML 表格
to_json将对象转换为 JSON( JavaScript Object Notation)字符串
to_msgpack将对象写入二进制格式编码的文件(Pandas v1.0.0 中已删除对 msgpack 的支持,建议使用 pyarrow)
to_picklePickle(序列化)对象到文件
to_sql将存储在 DataFrame 中的数据写入 SQL 数据库
to_stata将 DataFrame 对象导出为 Stata 格式
to_feather将 DataFrames 写入 Feather 二进制格式文件

以下以 to_csv 为例,它的参数同样多达 50 多个,具体可参见官方文档:

  • https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html

  • https://pandas.pydata.org/docs/reference/api/pandas.Series.to_csv.html

【02x01】简单示例

以之前的 test5.csv 文件为例,先读出数据,再将数据写入另外的文件:

>>> import pandas as pd
>>> data = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv')
>>> datasomething  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12  python
>>> 
>>> data.to_csv(r'C:\Users\TanRe\Desktop\out1.csv')

08

【02x02】sep 指定分隔符

sep 参数可用于其他分隔符:

>>> import pandas as pd
>>> data = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv')
>>> datasomething  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12  python
>>>
>>> data.to_csv(r'C:\Users\TanRe\Desktop\out2.csv', sep='|')

09

【02x03】na_rep 替换缺失值

na_rep 参数可将缺失值(NaN)替换成其他字符串:

>>> import pandas as pd
>>> data = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv')
>>> datasomething  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12  python
>>> 
>>> data.to_csv(r'C:\Users\TanRe\Desktop\out3.csv', na_rep='X')

10

【02x04】index / header 行与列标签

设置 index=False, header=False,可以禁用行标签与列标签:

>>> import pandas as pd
>>> data = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv')
>>> datasomething  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12  python
>>> 
>>> data.to_csv(r'C:\Users\TanRe\Desktop\out4.csv', index=False, header=False)

11

还可以传入列表来重新设置列标签:

>>> import pandas as pd
>>> data = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv')
>>> datasomething  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12  python
>>> 
>>> data.to_csv(r'C:\Users\TanRe\Desktop\out5.csv', header=['a', 'b', 'c', 'd', 'e', 'f'])

12

【02x05】columns 指定列

可以通过设置 columns 参数,只写入部分列,并按照指定顺序排序:

>>> import pandas as pd
>>> data = pd.read_csv(r'C:\Users\TanRe\Desktop\test5.csv')
>>> datasomething  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12  python
>>> 
>>> data.to_csv(r'C:\Users\TanRe\Desktop\out6.csv', columns=['c', 'b', 'a'])

13


这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/106963135
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

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

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

相关文章

COVID-19 肺炎疫情数据实时监控(python 爬虫 + pyecharts 数据可视化 + wordcloud 词云图)

文章目录【1x00】前言【2x00】思维导图【3x00】数据结构分析【4x00】主函数 main()【5x00】数据获取模块 data_get【5x01】初始化函数 init()【5x02】中国总数据 china_total_data()【5x03】全球总数据 global_total_data()【5x04】中国每日数据 china_daily_data()【5x05】境外…

【转】Postman系列二:Postman中get接口实战讲解(接口测试介绍,接口测试流程,头域操作)

一&#xff1a;接口测试介绍 接口测试&#xff1a;就是针对软件对外提供服务的接口输入输出进行测试&#xff0c;以及接口间相互逻辑的测试&#xff0c;验证接口功能和接口描述文档的一致性。 接口测试好处&#xff1a;接口测试通常能对系统测试的更为彻底&#xff0c;更高的保…

Python3 爬虫实战 — 前程无忧招聘信息爬取 + 数据可视化

爬取时间&#xff1a;2020-07-11&#xff08;2020年10月测试&#xff0c;增加了反爬&#xff0c;此代码已失效&#xff01;&#xff01;&#xff01;&#xff09;实现目标&#xff1a;根据用户输入的关键字爬取相关职位信息存入 MongoDB&#xff0c;读取数据进行可视化展示。涉…

【转】Postman系列三:Postman中post接口实战(上传文件、json请求)

一&#xff1a;接口测试过程中GET请求与POST请求的主要区别 从开发角度我们看get与post的主要区别是&#xff1a; 1.Get是用来从服务器上获得数据&#xff0c;而Post是用来向服务器上传递数据&#xff1b; 2.Get安全性比Post低&#xff1a;Get将表单中数据的按照keyvalue的形式…

Hadoop datanode正常启动,但是jps差不多datanode进程,而且Live nodes中却缺少节点

启动时可以看到启动成功&#xff0c;但是在chun2&#xff0c;jps的时候却没有了datanode进程&#xff0c;而且web端Live nodes也缺少了 百度搜索之后查到是因为hdfs.site.xml配置文件里dfs.data.dir配置的路径重复&#xff0c;就是多个节点存放data数据的目录路径相同了&#x…

【转】Postman系列四:Postman接口请求设置环境变量和全局变量、测试沙箱和测试断言、测试集运行与导入数据文件

一&#xff1a;Postman中接口请求设置环境变量和全局变量 全局变量和环境变量可以通过Pre-request Script和Tests设置&#xff0c;会在下面测试沙箱和测试断言中讲到。 全局变量的设置&#xff1a;官网参考https://learning.getpostman.com/docs/postman/environments_and_glob…

Python 算法之递归与尾递归,斐波那契数列以及汉诺塔的实现

文章目录递归概念递归要素递归与迭代的区别示例一&#xff1a;阶乘示例二&#xff1a;斐波那契数列示例三&#xff1a;汉诺塔问题尾递归Python 中尾递归的解决方案递归概念 递归&#xff1a;程序调用自身的编程技巧称为递归&#xff08; recursion&#xff09;。用一种通俗的话…

【转】Postman系列五:Postman中电商网站cookie、token检验与参数传递实战

一&#xff1a;Postman中电商网站cookie实战 Postman接口请求使用cookie两种方式&#xff1a; 1.直接在header&#xff08;头域&#xff09;中添加cookie&#xff0c;适用于已知请求cookie头域的情况 2.使用Postman的cookie管理机制&#xff0c;即可以手动添加&#xff0c;同时…

Python 数据结构之栈的实现

文章目录栈的概念栈的特点栈的操作Python 实现栈栈的简单应用&#xff1a;括号匹配问题栈的简单应用&#xff1a;倒序输出一组元素栈的概念 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;栈是一种线性数据结构&#xff0c;用先进后出或者是后进先出的方式存储数据&…

CSDN 2020 博客之星实时数据排名(Python 爬虫 + PyEcharts)

CSDN 2020 博客之星实时数据排名&#xff1a;csdn.itrhx.com CSDN 一年一度的博客之星评选开始了&#xff0c;官网地址&#xff1a;https://bss.csdn.net/m/topic/blog_star2020 &#xff0c;由于官网是按照随机编号排序的&#xff0c;没有按照票数多少排序&#xff0c;为了方便…

【转】注册Azure AD 应用程序

作者&#xff1a;陈希章 发表于2017年3月22日 在此前的文章中&#xff0c;我给大家介绍了分别用Graph 浏览器以及第三方工具&#xff08;POSTMAN&#xff09;快速体验Microsoft Graph的功能&#xff0c;其中有一个重要的环节就是&#xff0c;开发人员需要访问Microsoft Graph的…

Python + GitHub Actions 实现 CSDN 自动签到与抽奖(非 selenium 版本)

文章目录【1x00】技术栈【2x00】代码实现签到与抽奖【3x00】签到结果通知【03x01】Server 酱【03x02】企业微信【03x03】钉钉【4x00】自动签到【5x00】完整代码【6x00】如何使用【06x01】方法一&#xff1a;直接 Fork 代码&#xff08;推荐&#xff09;【06x01】方法二&#xf…

Spark安装配置

Scala基础语法学习的差不多了&#xff0c;先把spark安装上 首先官网下载解压安装后 进入到conf目录下修改文件名 修改spark-env.sh&#xff08;配置jdk路径&#xff09; export JAVA_HOME/usr/local/java/jdk1.8.0_221修改slaves&#xff08;添加子节点名&#xff09; chun…

【转】注册Azure AD 2.0 应用程序

作者&#xff1a;陈希章 发表于 2017年3月22日 上一篇 介绍了Microsoft Graph应用程序的一些概念&#xff0c;以及目前还比较普遍的Azure AD 1.0应用程序的注册方式。但正如我多次提到的那样&#xff0c;虽然目前功能还在不断完善&#xff0c;但Azure AD 2.0会逐渐成为主流&…

Python 采集 Facebook 评论插件、留言外挂程序

实现时间&#xff1a;2021-05-30实现难度&#xff1a;★★★☆☆☆实现目标&#xff1a;采集 Facebook 评论插件、留言外挂程序的所有评论。完整代码&#xff1a;https://github.com/TRHX/Python3-Spider-Practice/tree/master/CommentPlugin/facebook-comments其他爬虫实战代码…

写第一个spark程序(wordcount)

首先启动集群与spark 其次把spark目录下的README.md上传到hdfs 进入spark下的bin目录&#xff0c;运行spark-shell ./spark-shell运行 val textFile sc.textFile("hdfs://chun1:9000/spark/README.md")val wordCounts textFile.flatMap(line>line.split("…

【中国版Office 365 应用程序注册】

中国版Office 365是由世纪互联进行运营的一个云服务&#xff0c;单纯从技术角度来看的话&#xff0c;它基本保持了与国际版的同步。但是由于两个版本本质上是完全独立的&#xff0c;其中最关键的就是账号系统是分开的&#xff0c;所以从使用角度来看&#xff0c;不管是直接用户…

Python 中如何解决 asyncio 文件描述符最大数量限制问题

文章目录问题复现问题分析事件循环 EventLoopI/O 多路复用select 的缺点解决方法1.更换事件循环选择器2.限制并发量3.修改最大文件描述符限制WindowsLinux总结WindowsLinux问题复现 Windows 平台下&#xff0c;Python 版本 3.5&#xff0c;使用异步框架 asyncio&#xff0c;有…

【转】掀起Azure AD的盖头来——深入理解Microsoft Graph应用程序和服务权限声明

引子 这是一篇计划外的文章。我们都知道要进行Microsoft Graph的开发的话&#xff0c;需要进行应用程序注册。这个在此前我已经有专门的文章写过了。但这里存在一个小的问题&#xff1a;国内版的Office 365在申请好之后&#xff0c;并没有像国际版那样&#xff0c;有一个对应的…

Python3 学习系列 丨 博客目录索引

整个博客有关 Python 学习目录索引&#xff0c;方便快捷定位查询基础学习篇 Python3 基础学习笔记 C01【变量和简单数据类型】Python3 基础学习笔记 C02【列表】Python3 基础学习笔记 C03【操作列表】Python3 基础学习笔记 C04【if 语句】Python3 基础学习笔记 C05【字典】Pyt…