import pandas as pd
import numpy as np
import json,math
import random
from tqdm import tqdm
from collections import Counter ,defaultdict
import re,nltk
import re
import pandas as pd
import csv
df=pd.read_csv("导出印地语数据1000条.csv")
df.title
df
df.columns
for x in range(32,128):
print(f'{chr(x)}:{ord(chr(x))}',end=' ')
<!-- # print(f'{chr(x)}:{ord(chr(x))}') -->
print()
<!-- # print(hex(int.from_bytes(chr(x).encode('utf-8'),byteorder='big'))) -->
//统计词频
cnt_word=Counter()
for x in tqdm(df['body']):
cnt_word.update(x.split(' '))
cnt_word.most_common()
#词统计
cnt_word=Counter()
for x in tqdm(df['body']):
cnt_word.update(x.split(' '))
cnt_word.most_common()
print(len(cnt_word))
去除特殊符号
def sub_specialspecial1(s):
#pattern1=re.compile('[\u20-\uc3a8]')
pattern1=re.compile('[\x8b-\xbd]')
pattern2=re.compile('[\u2002-\uffff]')
pattern3=re.compile(r'🇷🇺🌟🌸🎀🎥🏆👉💜💪😉😍🙃🙌🙏🦄')
#s=pattern3.sub(' ',pattern2.sub(' ',pattern1.sub(' ',pattern4.sub('',s))))
s=pattern3.sub(' ',pattern2.sub(' ',pattern1.sub(' ',s)))
s=re.sub(r'([\u0021-\u0040]|[\u007b-\u007e])',r' \1 ',s)
s=re.sub('( ){2,}|\t|\n',' ',s)
s=re.sub('( ){2,}|\t|\n',' ',s)
return s
df['body']= df['body'].apply(sub_specialspecial1)
## 字符统计
cot=Counter()
for x in tqdm(df['body']):
for s in x:
cot.update(s)
# print(sorted(cot.keys()))
# print(cot)
dd=sorted(cot.keys())
dd
# type(dd)#list
# for x in dd:
# print(type(x))#str
# cot.most_common()
for x in dd:
print(f'{x}:{ord(x)}',end=' ')
print(hex(int.from_bytes(x.encode('utf-8'),byteorder='big')))
# 印地语字符utf-8编码值范围:2305(0xe0a481)-2415(0xe0a5af)
a='a'
# test='a'
# test.decode('utf-8')
print(a.encode('utf-8'))
decode与encode问题:python中的encode()和decode()函数
import sys
sys.getdefaultencoding()
ord('a')#返回字符对应的Unicode编码值
chr(2409)#返回number对应的字符
s=' !"#$%&\'()*+,-./:;<=>?@[\\]中文^_`da da k;'
re.sub(r'([\u0021-\u0040]|[\u007b-\u007e])',r' \1 ',s)
df_all=pd.read_csv("导出印地语数据.csv",chunksize=10000)
chunksize分块读取,用于大文件的读取
数据处理:1 用pandas处理大型csv文件 2 使用Pandas分块处理大文件 3 分块读取
df_all.title
dic={}
for i in tqdm(df_all["category2"]):#统计标签种类及各标签个数
if i in dic:
dic[i]+=1
else:
dic[i]=1
cnt=0
for i in dic:
if dic[i]>5:
cnt+=1
print(i,dic[i])
print(cnt)
# print(len(dic))#标签种类个数
# # print(dic)
# dic
使用tqdm()可以显示进度条
将category2列中满足条件的数据的对应行,若该行body列数据满足64<=词数<=1024则加入DataFrame类型的df_test_1中,用于后面写入csv文件
#将category2列中满足条件的数据的对应行,若该行body列数据满足64<=词数<=1024则加入DataFrame类型的df_test_1中,用于后面写入csv文件
cnt_word=0
df_test_1=pd.DataFrame()
cnt=0
for index,row in tqdm(df_all.iterrows()):
cnt+=1
if row["category2"] == "राजनीति" or row["category2"] == "पॉलिटिकल खबर":
for e in row['body']:
if(e==" "):
cnt_word+=1
print(cnt_word)
if cnt_word>=64 and cnt_word<=1024:
df_test_1[cnt]=row
cnt_word=0
转置后即为想要的格式
df_test_1.T
查看body列每个元素的词数
cnt_word=0
for i in df_test_1.T['body']:
for e in i:
if(e==" "):
cnt_word+=1
print(cnt_word)
cnt_word=0
# print("______")
写入“政治类.csv”文件
df_test_1.T.to_csv("政治类.csv")
df_test1=pd.read_csv("政治类.csv")
df_test1
(929 rows × 9 columns)
cnt_word=0
for i in df_test1['body']:
for e in i:
if(e==" "):
cnt_word+=1
print(cnt_word)
cnt_word=0
# print("______")
其他类别同样方法处理
# संस्कृति文化类
df_test_2=pd.DataFrame()
cnt=0
for index,row in tqdm(df_all.iterrows()):
cnt+=1
if row["category2"] == "संस्कृति":
print(index)
print(type(row))
# row.to_csv("")
df_test_2[cnt]=row
df_test_2.T.to_csv("文化类.csv")
df_test2=pd.read_csv("文化类.csv")
df_test2
(130 rows × 9 columns)
cnt_word=0
for i in df_test2['body']:
for e in i:
if(e==" "):
cnt_word+=1
print(cnt_word)
cnt_word=0
print("______")
# पर्यावरण环境类
df_test_3=pd.DataFrame()
cnt=0
for index,row in tqdm(df_all.iterrows()):
cnt+=1
if row["category2"] == "पर्यावरण":
print(index)
print(type(row))
# row.to_csv("")
df_test_3[cnt]=row
df_test_3.T.to_csv("环境类.csv")
df_test3=pd.read_csv("环境类.csv")
df_test3
(22 rows × 9 columns)
cnt_word=0
for i in df_test3['body']:
for e in i:
if(e==" "):
cnt_word+=1
print(cnt_word)
cnt_word=0
print("______")