tarea de análisis de datos datawhale1 (1) Use pandas para leer datos y contar los datos en papel

Registro de puntos de conocimiento estadístico (tarea de análisis de datos de ballenas de datos 1 (1))


Objetivo de GitHub : contar el
contenido de los artículos en varias direcciones en la computadora en 2019 ; operaciones básicas de pandas
Fuente del conjunto de datos: datos en papel

1 tipo de datos json y su lectura

1.1 El significado del tipo de datos json

Descripción detallada, comparación con xml, herramienta en línea json BeJson
JSON es un lenguaje similar a html, que usa un formato de texto completamente independiente del idioma, pero también usa hábitos similares a la familia de lenguajes C (incluyendo C, C ++, Java, JavaScript, Perl , Python, etc.). Estas características hacen de JSON un lenguaje de intercambio de datos ideal. Es fácil de leer y escribir para las personas, pero también fácil de analizar y generar para la máquina (generalmente se usa para mejorar la velocidad de transmisión de la red).

JSON se construye en dos estructuras:

  1. Una colección de pares de nombre / valor. En diferentes lenguajes, se entiende como objeto (objeto), registro (registro), estructura (estructura), diccionario (diccionario), tabla hash (tabla hash), lista por clave o matriz asociativa (matriz asociativa).
    Por ejemplo, {"firstName": "Brett", "lastName": "McLaughlin", "email": "aaaa"}
  2. Una lista ordenada de valores. En la mayoría de los idiomas, se entiende como una matriz.

JSON se compone de list y dict en python.

1.2 módulo de lectura y escritura de Python para archivos json

  • json: se utiliza para convertir entre tipos de datos de cadena y python, proporciona cuatro funciones: volcados, volcado, cargas, carga
    volcados json convierte tipos de datos en cadenas volcado convierte tipos de datos en cadenas y los almacena en un archivo cargas Convertir una cadena en un tipo de datos cargar convertir el archivo de una cadena a un tipo de datos

  • pickle: utilizado para convertir entre tipos específicos de Python y tipos de datos de Python, proporcionando cuatro funciones: volcados, volcado, cargas, carga de
    encurtidos, lo mismo

  • Diferencia 1: json puede intercambiar datos entre diferentes idiomas, mientras que pickle solo se usa entre python.

  • Diferencia 2: json solo puede serializar los tipos de datos más básicos, como (listas, diccionarios, listas, cadenas, números, etc.), pero no para formatos de fecha y objetos de clase, mientras que pickle puede serializar todos los tipos de datos, incluidas clases y funciones se puede serializar.

import json
test_dict = {
    
    'bigberg': [7600, {
    
    1: [['iPhone', 6300], ['Bike', 800], ['shirt', 300]]}]}
print(test_dict)
print(type(test_dict))
#dumps 将数据转换成字符串
json_str = json.dumps(test_dict)
print(json_str)
print(type(json_str))
#loads 将字符串转换成原有数据类型
new_dict = json.loads(json_str)
print(new_dict)
print(type(new_dict))

1.3 con ... como declaración y función abierta para lectura de datos

data  = [] #初始化
#使用with语句优势:1.自动关闭文件句柄;2.自动显示(处理)文件读取数据异常
with open("arxiv-metadata-oai-snapshot.json", 'r') as f: 
    for line in f: 
        data.append(json.loads(line))
        
data = pd.DataFrame(data) #将list变为dataframe格式,方便使用pandas进行分析

Use la función open () incorporada de Python, open ('ruta + nombre de archivo', 'modo abierto'), el segundo parámetro determina el modo de abrir el archivo: r de solo lectura, escribir w, agregar a, etc. El significado de los parámetros específicos se muestra en la siguiente tabla:

modo sentido
r Abra el archivo como de solo lectura. El puntero del archivo se colocará al principio del archivo. Este es el modo por defecto.
rb Abra un archivo en formato binario para solo lectura. El puntero del archivo se colocará al principio del archivo.
r + Abra un archivo para leer y escribir. El puntero del archivo se colocará al principio del archivo.
w Abra un archivo solo para escritura. Si el archivo ya existe, se sobrescribirá. Si el archivo no existe, cree uno nuevo.
un Abra un archivo para agregarlo. Si el archivo ya existe, el puntero del archivo se colocará al final del archivo. En otras palabras, el nuevo contenido se escribirá después del contenido existente. Si el archivo no existe, cree un nuevo archivo para escribir.
(r / w / a) b Abra el archivo en formato binario para solo lectura / escritura / lectura-escritura / anexar /
(a / r / w / ab / wb / rb) + Modos de lectura y escritura para diferentes posiciones de puntero
with open('/path/to/file', 'r') as f:
    print(f.read())# 调用read()会一次性读取文件的全部内容,如果数据过大,内存会承受不了,可通过f.read(size)读取size个数据
    for line in f.readlines():# 按行读取
    print(line)
 #写入数据,注意写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。
 #with语句会自动调用close方法
with open('file', 'w') as f:
    f.write('Hello, world!')
    

2 Función dividida y generador de bucle anidado de lista

2.1 función de división

unique_categories = set([i for l in [x.split(' ') for x in data["categories"]] for i in l])
len(unique_categories)
unique_categories

split () devuelve una lista. La cadena se divide por el separador especificado. Si el parámetro num tiene un valor especificado, num + 1 subcadenas se separan

str.split (str = "", num = string.count (str)).

  • str-Separator, el valor predeterminado son todos los caracteres vacíos, incluidos espacios, líneas nuevas (\ n), tabulaciones (\ t), etc.
  • num-el número de divisiones. El valor predeterminado es -1, lo que significa que todos están separados.
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );       # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个

['Línea1-abcdef', 'Línea2-abc', 'Línea4-abcd']
['Línea1-abcdef', '\ nLínea2-abc \ nLínea4-abcd']

2.2 Bucle anidado del generador de listas

#列表生成式:用来生成列表,在元列表的基础上生成一个新列表,可以让代码更简洁
格式:
[exp for var in iterable]
exp:表达式
var:变量
iterable:可迭代对象
执行过程:
1,先遍历可迭代对象中的元素
2,将此元素赋值给var
3,将var的值作用到exp这个表达式上
4,将表达式的结果生成一个新列表
'''
# range在python2中返回一个列表 python3中返回的是一个可迭代对象
li=[i for i in range(1,11)]  #两个变量i要一致
print(li)
l1=[1,2,3,4]
l2=[i*i for i in l1]
print(l1)
print(l2)   #[1, 2, 3, 4]
            #[1, 4, 9, 16]
l1=[1,2,3,4]
l2=[]
for i in l1:
    l2.append(i*i)
print(l1)
print(l2)
#生成一个2n+1的数字,n的取值范围是2-8
# l4=[(2*i+1)for i in range(2,9)]
l4=[2*i+1 for i in range(2,9)]
print(l4)
格式二:

[exp for var in iterable if 判断条件]

1,遍历得到每一个元素

2,将遍历得到的元素赋值给var

3,将var的值作用到if语句上

4,如果满足条件就将满足条件的值作用到exp表达式上

5,将exp表达式的运算结果追加到新的列表
#使用列表生成式

l5=list(range(1,11))

l6=[i for i in l5 if i%2==0]

print(l6)
格式三:嵌套循环
l10=["a",'b','c','d']

l11=['f','j']

l12=[]

for i in l10:
    for j in l11:
        l12.append(i+j)
print(l12)

使用列表生成式:

l10=["a",'b','c','d']

l11=['f','j']

l12=[i+j for i in l10 for j in l11]

print(l12)

['af', 'aj', 'bf', 'bj', 'cf', 'cj', 'df', 'dj']

格式四:

有else语句时使用,注意这个判断条件都放for前面

l14=['Abc','DEF',10]

l15=[]

for i in l14:
    if isinstance(i,str):
        l15.append(i.lower())
    else:
        l15.append(i)

print(l15)

使用列表生成式,大写字母变小写,不是的不变

l14=['Abc','DEF',10]

l15=[i.lower() if isinstance(i,str) else i for i in l14 ]

print(l15)

Supongo que te gusta

Origin blog.csdn.net/qq_43720646/article/details/112598481
Recomendado
Clasificación