数据读取模块

Catalogue
  1. 1. 读取xlsx文件
  2. 2. df为Dataframe格式数据
  3. 3. 读取csv文件
  4. 4. 写入xlsx文件
    1. 4.1. 其他类型转为Dataframe
  5. 5. 写入csv文件
  6. 6. elk拉取数据

读取xlsx文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pandas as pd


# 读取xlsx文件
# 安装 pip3 install openpyxl

df_xlsx = pd.read_excel('/root/test2.xlsx', engine='openpyxl', sheet_name='工作表1',keep_default_na=False)

# keep_default_na=False 把空值不变成NaN

print(df_xlsx)


uuid host init_host 地区 运营商 service_name
0 d78230 183.215.145.111 183.215.145.222 湖南 xx
1 46ef0c 111.8.203.111 湖南 移动 xx

df为Dataframe格式数据

1
2
3
4
5
6
7
8
9
10
11
df.shape    返回df/表格的形状(几行几列),例如返回值为(2,6),则该df是2行6列

df.shape[0] 返回行数

de.shape[1] 返回列数

可以使用for循环对df进行操作:
for row in range(0, df_xlsx.shape[0]):
print(df_xlsx['uuid'][row])

将其转换为列表或者字典

读取csv文件

1
2
3
4
5
6
7
8
9
10
11
import csv
# 从csv中读取数据

with open('/root/test.csv','r', encoding='utf-8') as f:
lines=csv.reader(f)
for line in lines:
print(line)

['a9e7b4', '福建省', '电信', '845', '1000']
['43908a', '福建省', '电信', '357', '1000']
['8dd28d', '浙江省', '电信', '828', '1000']

写入xlsx文件

其他类型转为Dataframe

两个字典嵌套转Dataframe

1
2
3
4
5
6
7
8
9
10
11
>>> import pandas as pd
>>> my_dict = {'i': {'a':1}, 'love': {'b':2}, 'you': {'c':3}}
>>> a=pd.DataFrame(my_dict)
>>> print(a)
i love you
a 1.0 NaN NaN
b NaN 2.0 NaN
c NaN NaN 3.0

具体例子具体分析吧
建议:其他数据格式转Dataframe,最好先使用其他格式排列好数据,再转df,df直接输出到xlsx就行

写入csv文件

1
2
3
4
5
6
import csv

with open('test.csv', 'w', newline='',encoding='utf-8') as f:
writer = csv.writer(f)
#一行行写入
writer.writerows(list2)

elk拉取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from elasticsearch import Elasticsearch

es = Elasticsearch(["192.168.3.1:9200"],timeout=120)

body={
"query": {
"bool": {
"must": [
{
"match": {
"IpMd5.keyword": uuid
}
}
],
"must_not": [],
"should": [],
"filter": [
{
"range": {
"Time": {
"gte": "2022-06-29T20:20:00+08:00",
"lt": "2022-06-29T20:25:00+08:00"
}
}
}
]
}
}
}

res = es.search(index='nodeslogW', size=300, body=body)
# 返回的是字典的格式
doc = res['hits']['hits']
if len(doc):
for item in doc:
print(item['_source']['Services']['XX']['buffer'])

参考:查询表达式

参考:组合查询