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()
pandas 数据处理 一些常用操作的更多相关文章
- pandas数据分析API常用操作
1.导入数据 df = pd.read_csv( # 该参数为数据在电脑中的路径,可以不填写 filepath_or_buffer='/Users/Weidu/Desktop/sz000002.csv ...
- Pandas 之 DataFrame 常用操作
import numpy as np import pandas as pd This section will walk you(引导你) through the fundamental(基本的) ...
- Pandas | Dataframe的merge操作,像数据库一样尽情join
今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe的合并. 常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特征合并在一起.第二种是我们新获取了一份数据集 ...
- (数据科学学习手札131)pandas中的常用字符串处理方法总结
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...
- ArcGIS中的坐标系:基本概念和常用操作(一)
本文呢是主要是借鉴李郎平李大大的博士论文和百度百科,里面还有一点点我自己的理解,希望能帮助自己加深对于坐标系的认识. 李大大的博客:http://blog.sciencenet.cn/u/Brume ...
- pandas_时间序列和常用操作
# 时间序列和常用操作 import pandas as pd # 每隔五天--5D pd.date_range(start = '',end = '',freq = '5D') ''' Dateti ...
- pandas_一维数组与常用操作
# 一维数组与常用操作 import pandas as pd # 设置输出结果列对齐 pd.set_option('display.unicode.ambiguous_as_wide',True) ...
- Stream常用操作以及原理探索
Stream常用操作以及原理 Stream是什么? Stream是一个高级迭代器,它不是数据结构,不能存储数据.它可以用来实现内部迭代,内部迭代相比平常的外部迭代,它可以实现并行求值(高效,外部迭代要 ...
- 【三】用Markdown写blog的常用操作
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
- php模拟数据库常用操作效果
test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...
随机推荐
- Mathematica做数字图像处理中的ImageConvolve练习
目录 ImageConvolve练习 original right sobel 垂直边检测 top sobel 水平边检测 通过一个平方内核的卷积使图像变平滑 类似ConstantArray[1, { ...
- Vue2数据驱动渲染(render、update)
上一篇文章我们介绍了 Vue2模版编译原理,这一章我们的目标是弄清楚模版 template和响应式数据是如何渲染成最终的DOM.数据更新驱动视图变化这部分后期会单独讲解 我们先看一下模版和响应式数据是 ...
- Kafka存储内幕详解
1.概述 随着微服务和分布式计算的出现,Kafka已经成为各种主流平台系统架构中不可缺少的组成部分了.在本篇文章中,笔者将尝试为大家来解密Kafka的内部存储机制是如何运作的. 2.内容 在分布式系统 ...
- OSM(OpenStreetMap)全球路网数据下载方式介绍
本文对OpenStreetMap(OSM)网页与各类OSM数据的多种下载方式加以详细介绍,并对不同数据下载方式加以对比. OSM数据包含道路与铁路路网.建筑.水体.土地利用.兴趣点.行政区边界 ...
- FileReader之获取文本文件内容为字符串
FileReader之获取文本文件内容为字符串 FileReader官网描述: FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 Fil ...
- MySQL相关知识点思维导图整理
MySQL相关知识点思维导图整理 Xmind思维导图下载地址: 蓝奏云:https://shuihan.lanzoui.com/iXZw7frkn5a
- [数据结构]二叉搜索树(BST) VS 平衡二叉排序树(AVL) VS B树(平衡多路搜索树) VS B+树 VS 红黑树(平衡二叉B树)
1 二叉排序树/二叉查找树/Binary Sort Tree 1种对排序和查找都很有用的特殊二叉树 叉排序树的弊端的解决方案:平衡二叉树 二叉排序树必须满足的3条性质(或是具有如下特征的二叉树) 若它 ...
- 由ASP.NET Core读取Response.Body引发的思考
前言 前几天有群友在群里问如何在我之前的文章<ASP.NET Core WebApi返回结果统一包装实践>的时候有点疑问,主要的疑问点就是关于Respouse的读取的问题.在之前的文章&l ...
- MySQL(十二)索引使用的情况分析
索引使用的情况分析 数据准备 创建表student_info.course CREATE TABLE `student_info` ( `id` int NOT NULL AUTO_INCREMENT ...
- jmap执行失败了,怎么获取heapdump?
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 在之前的OOM问题复盘中,我们添加了jmap脚本来自动dump内存现场,方便排查OOM问题. 但当我反复模拟OO ...