- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 perl 中做了很多数据分析,我正在尝试使用 pandas、numpy、matplotlib 等在 python 中复制这项工作。
一般的工作流程如下:
1) glob 目录中的所有文件
2) 解析文件,因为它们有元数据
3) 使用正则表达式来隔离给定文件中的相关行(它们通常以诸如“LOOPS”的标记开头)
4) 拆分匹配标签的行并将数据加载到哈希中
5) 做一些数据分析
6) 画一些图
这是我通常在 perl 中执行的操作的示例:
print"Reading File:\n"; # gets data
foreach my $vol ($SmallV, $LargeV) {
my $base_name = "${NF}flav_${vol}/BlockedWflow_low_${vol}_[0-9].[0-9]_-0.25_$Mass{$vol}.";
my @files = <$base_name*>; # globs for file names
foreach my $f (@files) { # loops through matching files
print"... $f\n";
my @split = split(/_/, $f);
my $beta = $split[4];
if (!grep{$_ eq $beta} @{$Beta{$vol}}) { # constructs Beta hash
push(@{$Beta{$vol}}, $split[4]);
}
open(IN, "<", "$f") or die "cannot open < $f: $!"; # reads in the file
chomp(my @in = <IN>);
close IN;
my @lines = grep{$_=~/^LOOPS/} @in; # greps for lines with the header LOOPS
foreach my $l (@lines) { # loops through matched lines
my @split = split(/\s+/, $l); # splits matched lines
push(@{$val{$vol}{$beta}{$split[1]}{$split[2]}{$split[4]}}, $split[6]);# reads data into hash
if (!grep{$_ eq $split[1]} @smearingt) {# fills the smearing time array
push(@smearingt, $split[1]);
}
if (!grep{$_ eq $split[4]} @{$block{$vol}}) {# fills the number of blockings
push(@{$block{$vol}}, $split[4]);
}
}
}
foreach my $beta (@{$Beta{$vol}}) {
foreach my $loop (0,1,2,3,4) { # loops over observables
foreach my $b (@{$block{$vol}}) { # beta values
foreach my $t (@smearingt) { # and smearing times
$avg{$vol}{$beta}{$t}{$loop}{$b} = stat_mod::avg(@{$val{$vol}{$beta}{$t}{$loop}{$b}}); # to find statistics
$err{$vol}{$beta}{$t}{$loop}{$b} = stat_mod::stdev(@{$val{$vol}{$beta}{$t}{$loop}{$b}});
}
}
}
}
}
print"File Read in Complete!\n";
我希望将此数据加载到分层索引数据结构中,其中 perl 哈希的索引成为我的 python 数据结构的索引。到目前为止,我遇到的每个 pandas 数据结构示例都是高度人为设计的,其中整个结构(索引和值)在一个命令中手动分配,然后进行操作以演示数据结构的所有功能。不幸的是,我无法一次分配所有数据,因为我不知道要分析的数据中的质量、β、大小等。我做错了吗?有谁知道这样做的更好方法吗?数据文件是不可变的,我将不得不使用正则表达式解析它们,我知道该怎么做。我需要帮助的是将数据放入适当的数据结构中,以便我可以取平均值、标准差、执行数学运算并绘制数据。
典型数据的标题行数未知,但我关心的内容如下所示:
Alpha 0.5 0.5 0.4
Alpha 0.5 0.5 0.4
LOOPS 0 0 0 2 0.5 1.7800178
LOOPS 0 1 0 2 0.5 0.84488326
LOOPS 0 2 0 2 0.5 0.98365135
LOOPS 0 3 0 2 0.5 1.1638834
LOOPS 0 4 0 2 0.5 1.0438407
LOOPS 0 5 0 2 0.5 0.19081102
POLYA NHYP 0 2 0.5 -0.0200002 0.119196 -0.0788721 -0.170488
BLOCKING COMPLETED
Blocking time 1.474 seconds
WFLOW 0.01 1.57689 2.30146 0.000230146 0.000230146 0.00170773 -0.0336667
WFLOW 0.02 1.66552 2.28275 0.000913101 0.00136591 0.00640552 -0.0271222
WFLOW 0.03 1.75 2.25841 0.00203257 0.00335839 0.0135 -0.0205722
WFLOW 0.04 1.83017 2.22891 0.00356625 0.00613473 0.0224607 -0.0141664
WFLOW 0.05 1.90594 2.19478 0.00548695 0.00960351 0.0328218 -0.00803792
WFLOW 0.06 1.9773 2.15659 0.00776372 0.0136606 0.0441807 -0.00229793
WFLOW 0.07 2.0443 2.1149 0.010363 0.018195 0.0561953 0.00296648
我(认为)我想要的,我用 think 作为开头,因为我是 python 的新手,专家可能知道更好的数据结构,是一个层次索引系列,看起来像这样:
volume mass beta observable t value
1224 0.0 5.6 0 0 1.234
1 1.490
2 1.222
1 0 1.234
1 1.234
2448 0.0 5.7 0 1 1.234
等等:http://pandas.pydata.org/pandas-docs/dev/indexing.html#indexing-hierarchical
对于那些不了解 perl 的人:
我需要的肉和土 bean 是这个:
push(@{$val{$vol}{$beta}{$split[1]}{$split[2]}{$split[4]}}, $split[6]);# reads data into hash
我这里有一个名为“val”的散列。这是数组的哈希。我相信在 python 中这将是列表的字典。这里的每件事看起来像这样:'{$something}' 是散列 'val' 中的一个键,我将存储在变量 $split[6] 中的值附加到数组的末尾,即指定的散列元素通过所有 5 个键。这是我的数据的根本问题,因为我感兴趣的每个数量都有很多键。
==========
我想出了以下导致此错误的代码:
Traceback (most recent call last):
File "wflow_2lattice_matching.py", line 39, in <module>
index = MultiIndex.from_tuples(zipped, names=['volume', 'beta', 'montecarlo_time, smearing_time'])
NameError: name 'MultiIndex' is not defined
代码:
#!/usr/bin/python
from pandas import Series, DataFrame
import pandas as pd
import glob
import re
import numpy
flavor = 4
mass = 0.0
vol = []
b = []
m_t = []
w_t = []
val = []
#tup_vol = (1224, 1632, 2448)
tup_vol = 1224, 1632
for v in tup_vol:
filelist = glob.glob(str(flavor)+'flav_'+str(v)+'/BlockedWflow_low_'+str(v)+'_*_0.0.*')
for filename in filelist:
print 'Reading filename: '+filename
f = open(filename, 'r')
junk, start, vv, beta, junk, mass, mont_t = re.split('_', filename)
ftext = f.readlines()
for line in ftext:
if re.match('^WFLOW.*', line):
line=line.strip()
junk, smear_t, junk, junk, wilson_flow, junk, junk, junk = re.split('\s+', line)
vol.append(v)
b.append(beta)
m_t.append(mont_t)
w_t.append(smear_t)
val.append(wilson_flow)
zipped = zip(vol, beta, m_t, w_t)
index = MultiIndex.from_tuples(zipped, names=['volume', 'beta', 'montecarlo_time, smearing_time'])
data = Series(val, index=index)
最佳答案
您将获得以下内容:
NameError: name 'MultiIndex' is not defined
因为在导入Series和DataFrame的时候并没有直接导入MultiIndex。
你有-
from pandas import Series, DataFrame
你需要——
from pandas import Series, DataFrame, MultiIndex
或者您可以使用 pd.MultiIndex 来引用 MultiIndex,因为您将 pandas 导入为 pd
关于python - 尝试用python解析文本文件进行数据分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354725/
1.摘要 在数据可视化、统计绘图和图表生成领域,Python 被广泛使用,其中 Matplotlib 是一个极其重要的基础三方库。本博客旨在介绍 Python 及其三方库 Matplotlib
为什么要学习pandas? numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数
0. 数据说明 本项目所用数据集包含了一个家庭6个月的用电数据,收集于2007年1月至2007年6月。 这些数据包括有功功率、无功功率、电压、电流强度、分项计量1(厨房)、分项计量2(洗衣房
由于我现在不知道自己在做什么,所以我的措辞听起来很有趣。但是说真的,我需要学习。 我面临的问题是提出一种方法(模型)来估计软件程序的工作方式:即运行时间和最大内存使用量。我已经拥有了大量数据。此数据集
我在 PostgreSQL 中有一个表,其结构和数据如下: Question | Answer | Responses ------------------------------
numbers = LabelEncoder() State_Data['Quality'] = numbers.fit_transform(State_Data['Quality Paramet
我一直在尝试解决这个问题: 我有一组数据点,对应于一组时间值。即 values =[1,2,3,4,5,6,7,8,4] times = [0.1,0.2,0.3,0.4]... 等等,这是一个示例速
哔哔一下 雪中悍刀行兄弟们都看过了吗?感觉看了个寂寞,但又感觉还行,原谅我没看过原著小说~ 豆瓣评分5.8,说明我还是没说错它的。 当然,这并不妨碍它波播放量嘎嘎上涨,半个月25亿播放,平均一集一个亿
在 Pandas 中是否有任何可重用的数据分析代码,可以在 html 输出中给出结果。 我已经尝试过来自以下链接的命令,但没有一个输出是 html 格式。 https://kite.com/blog/
吴京近年拍的影视都是非常富有国家情怀的,大人小孩都爱看,每次都是票房新高,最新的长津湖两部曲大家都有看吗,第一步还可以,第二部水门桥也不差,截止目前已经36.72亿票房。 某眼评分9.6,某瓣评分7.
我有一个 .csv 文件,其中包含来自 eBay 拍卖的以下数据: auctionid - 拍卖的唯一标识符 bidtime - 出价的时间(以天为单位),从拍卖开始 投标人 - 投标人的 eBay
目录 1、爬虫 1.1 爬取目标 1.2 分析页面 1.3 爬虫代码 1.4 结果数据
我是 pyspark 的新手,我有这个示例数据集: Ticker_Modelo Ticker Type Period Product Geography Source Unit
我是一名优秀的程序员,十分优秀!