首页 > 其他分享 >pandas 数据处理 一些常用操作

pandas 数据处理 一些常用操作

时间:2023-05-15 18:12:28浏览次数:41  
标签:常用 name text ticker len seg 数据处理 data pandas

 

读取csv文件,打印列名称:

import pandas as pd

# data = pd.read_csv("guba_fc_result_20230413.csv")

data = pd.read_csv("guba_all_newtext_20230413.csv")
data.columns

  

保存文件:

data.to_csv("guba_all_cutwords_20230413.csv",index=False)

  

统计:

data['ticker_name'].value_counts()

  

字符串长度过滤:

filtered_df = data[data['matches'] != '[]']

long_text = filtered_df[filtered_df['text'].str.len() > 100]

  

画字符串长度直方图:

import numpy as np
from matplotlib import pyplot as plt

len_text = [len(text) for text in filtered_df['text']]
#len_text = [len(text) for text in data['content']]
#len_text = [len(text) for text in data['rateContent']]

plt.figure(figsize=(20,8),dpi=80)
plt.hist(len_text,bins=20)
plt.show()

  

按字符串名称过滤:

v_data = data[data['ticker_name'].isin(['迈瑞医疗'])]
v_data = v_data[v_data['post_date'].isin(['2023-03-01'])]

  

去除nan值:

data.dropna(inplace=True)

  

合并同名称的数据:

#所有的相同股票的数据合并在一起

# 根据ticker_name列对数据进行分组,并将每个分组的seg数据合并在一起
data = data.groupby('ticker_name')['seg'].apply(lambda x: ' '.join(x)).reset_index()
data

  

按字符串长度过滤数据:

# 计算seg列中词个数
data['word_count'] = data['seg'].str.split().apply(len)

# 保留词个数超过200的行
data = data[data['word_count'] > 200]

# 移除word_count列
data = data.drop('word_count', axis=1)
data

  

统计分词词数:

word_counts = data.groupby('ticker_name')['seg'].apply(lambda x: sum(len(text.split()) for text in x)).reset_index()

# 输出结果
print(word_counts)

  

对分词结果分组,保存新的行:

import math

def split_seg(seg, chunk_size):
    chunks = []
    words = seg.split()
    num_chunks = math.ceil(len(words) / chunk_size)
#     print("num_chunks:",num_chunks)
    for i in range(num_chunks):
        start = i * chunk_size
        end = start + chunk_size
        chunk = ' '.join(words[start:end])
        chunks.append(chunk)
    return chunks

# 分割seg列
new_rows = []
for _, row in data.iterrows():
    ticker_name = row['ticker_name']
    seg = row['seg']
    num_words = len(seg.split())
    if num_words > 1000:
        chunked_segs = split_seg(seg, 3000)
        for i, chunk in enumerate(chunked_segs):
            new_ticker_name = ticker_name + '_' + str(i)
            new_rows.append({'ticker_name': new_ticker_name, 'seg': chunk})
    else:
        new_rows.append({'ticker_name': ticker_name, 'seg': seg})

# 创建新的DataFrame
new_data = pd.DataFrame(new_rows)
new_data

  

对分组分词使用tfidf算法:

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer


# 定义tokenizer函数
def tokenizer(text):
    return text.split()

# 计算tf-idf值
tfidf = TfidfVectorizer(tokenizer=tokenizer, stop_words='english')
tfidf_matrix = tfidf.fit_transform(new_data['seg'])

# 获取特征名列表
feature_names = tfidf.get_feature_names()

# 遍历每篇文章
for _, group in new_data.groupby('ticker_name'):
    # 获取tf-idf矩阵
    tfidf_scores = tfidf_matrix[group.index, :]
    
    # 计算每个词的tf-idf值
    word_scores = list(zip(feature_names, tfidf_scores.sum(axis=0).tolist()[0]))
    
    # 按tf-idf值从大到小排序
    word_scores = sorted(word_scores, key=lambda x: x[1], reverse=True)
    
    # 打印文章中tf-idf值最高的前10个词
    print(group['ticker_name'].iloc[0])
    for word, score in word_scores[:10]:
        print(word, score)
    print()

  

 

标签:常用,name,text,ticker,len,seg,数据处理,data,pandas
From: https://www.cnblogs.com/LiuXinyu12378/p/17402725.html

相关文章

  • pandas中的catagory 类型
    pandas中的catagory类型pandas中的category类型是一种用于处理分类变量的数据类型。它可以大大提高数据处理和计算效率,并减少内存占用。在某些情况下,数据中的一些变量只包含有限的可能取值,例如“性别”、“地区”等,这些变量可以归类为分类变量。如果将这些变量存储为字符串或......
  • pandas常用学习
    importpandasaspdclasspandas():def__int__(self):passdefcreat_dataframe(self):data={"a":[1,2],"b":["test1","test2"]}#使用字典加列表的形式创建dataframe,colums为字典的key,index可以自定义......
  • 【jmeter】执行jmeter的脚本的常用命令行
    一、jmeter命令帮助jmeter--helpSLF4J:ClasspathcontainsmultipleSLF4Jbindings.SLF4J:Foundbindingin[jar:file:/D:/apache-jmeter-5.4/lib/log4j-slf4j-impl-2.13.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J:Foundbindingin[jar:file:/D:/apac......
  • 常用指令
    ls显示文件或目录参数说明-l列出文件详细信息l(list)-a列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir创建目录参数说明-p创建目录,若无父目录,则创建p(parent)cd切换目录touch创建空文件echo创建带有内容的文件......
  • java数组去重_JAVA数组去重常用方法
    java数组去重_JAVA数组去重常用方法发布于 2022-09-1017:18:356950举报大家好,又见面了,我是你们的朋友全栈君。packagecom.zxj.test;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.HashMap;importjava.util.List;importjava.util.......
  • 安装和卸载pandas
     安装Pandaspipinstallpandas;#查看版本号pandas.__version__  卸载pandaspipuninstallpandas;     原文链接:https://aistudio.baidu.com/aistudio/projectdetail/4411791 在终端命令行中有三种安装方法,输入命令:(1)pipinstallpandas。自......
  • 基于反向神经网络BP的多维输入单维输出的回归预测建模,该模型同时带有paper中的常用的
    基于反向神经网络BP的多维输入单维输出的回归预测建模,该模型同时带有paper中的常用的模型评价指标,可以直接拿来替换数据做分析,同时各种指标都可以输出,方便记录,如果不会替换数据,可以帮忙替换数据。ID:9730666506696657......
  • 基于随机森林的多维输入单维输出的回归预测建模,该模型同时带有paper中的常用的模型评
    基于随机森林的多维输入单维输出的回归预测建模,该模型同时带有paper中的常用的模型评价指标,可以直接拿来替换数据做分析,同时各种指标都可以输出,方便记录,如果不会替换数据,可以帮忙替换数据,该货品属于虚拟产品,一经售出,概不退货。ID:4135666903581785......
  • linux常用命令
    crul"访问地址"模拟访问地址ps-ef|grepelastices的运行状态./elasticsearch-des启动命令exit退出当前用户chown-Relastic:elastic*增加目录权限和冒号后面迭代所有的目录rm-rf文件删除文件cp拷贝的文件拷贝文件的目录和文件名./shutdown.sh关闭tomcat./......
  • 常用设计模式之.Net示例代码合集
    每一次初学者粉丝朋友,在后台向我咨询编程问题,我除了给他们指导学习路线,我都会建议他们学完基础知识后,一定要要注重编程规范,学习设计模式,修炼内功。虽然说很多程序员,他们日常主要工作是CRUD,但是学习设计模式也是有助于学习公司的框架,另外设计模式是为了可重用代码、让代码更容易被......