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); ...
随机推荐
- lua脚本概述
1.lua脚本非常简单,轻量级,易于c/c++调用 2. 协程 是什么,与线程有啥区别 ??
- DRF的序列化器Serializer
一 序列化器的作用 1. 序列化,序列化器会把模型对象转换成字典,经过视图中response对象以后变成json字符串 2. 反序列化,视图中request会把客户端发送过来的数据转换成字典,序列化器 ...
- Pinia使用技巧
vue2使用的vuex,是一个状态管理器,现在vue3出了最新的pinia,今年偿试一下. 首先是安装,这里要注意一下,有一个持久化插件,如果不用的话,页面一刷新,状态会消失. npm install ...
- DecimalFormat--控制输出格式
DecimalFormat的相关应用 整数的实现: 小数的实现: 科学计数法: 分组分隔符: 举个例子吧!-- 关于前缀后缀: 本地化货币符号: 引用特殊的字符,作为前缀或者后缀: 实例来袭! 1.0 ...
- 基于Vue 使用threejs导入gltf动画模型
被老师要求学习这个完全不懂的领域的知识,代码东拼西凑终于搞定了,可能写的不好,但这方面的教程很少 某CS**平台的教程都是互相抄,看着烦死. <template> <div id=& ...
- JVM Dump分析
Thread Dump介绍 Thread Dump是非常有用的诊断 Java应用问题的工具.每一个 Java虚拟机都有及时生成所有线程在某一点状态的 thread-dump的能力,虽然各个 Java虚 ...
- 手机号码归属地的自动查询.py(亲测有效)
import requests url = "http://m.ip138.com/sj.asp?mobile=" kv = {'user-agent':'Mozilla/5.0' ...
- VW
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ARC149(A~E)
Tasks - AtCoder Regular Contest 149 又是114514年前做的题,现在来写 屯了好多,清一下库存 A - Repdigit Number (atcoder.jp) 直 ...
- 深度剖析Redis九种数据结构实现原理,建议收藏
1. Redis介绍 Redis 是一个高性能的键值存储系统,支持多种数据结构. 包含五种基本类型 String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),和 ...