对于μ子实验数据进行快速处理与分析
实验中心网站上有μ子实验的链接: μ子寿命测量, 里面获得的原始数据可以利用python进行快速分析与作图.
筛选后的“寿命测量”有效事件数据
数据文件中每行第一个数据为μ子 衰变 时间(ns), 后一个为事件编号
筛选后的有效事件数据文件(一)
筛选后的有效事件数据文件(二)
import
matplotlib.pyplot as plt
import pandas as pd
#names栏目抬头; delimiter 定义分隔符为' ',
df = pd.read_csv('E:\PycharmProjects \muon1.txt',
names=['time','id'], delimiter=' ')
#有网络的话甚至可以直接给网络链接:
df = pd.read_csv('http://phylab.fudan.edu.cn /lib/exe/fetch.php?media=exp:muon:muon_sifted_1.txt',
names=['time','id'], delimiter=' ')
df
Out[20]:
time id
0 1080 1072823444
1 1920 1072823553
2 3220 1072823606
3 3860 1072823639
df['time'].hist(bins=100, alpha=0.3, normed=True)
plt.show()
|
更进一步, 可以用numpy 做数据统计后plot
import
numpy as np
#函数输出两列, 第一列为计数, 第二列为bins区间
cnts = np.histogram(df['time'],bins=range (0,20000,100))[0]
plt.plot(cnts) |
得到的数据可以通过np.polyfit进行拟合, 完整代码如下
#
-*- coding: utf-8 -*-
# by whyx 2017/1
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
#names栏目抬头; delimiter 定义分隔符为' ',
#df = pd.read_csv('E:\PycharmProjects\muon1.txt',
names=['time','id'], delimiter=' ')
#有网络的话甚至可以直接给网络链接:
df = pd.read_csv('http://phylab.fudan.edu.cn/ lib/exe/fetch.php?media=exp:muon:muon_sifted_1.txt',
names=['time','id'], delimiter=' ')
df['time'].hist(bins=100, alpha=0.3, normed=True)
plt.show()
cnts = np.histogram(df['time'],bins=range (0,20000,100))[0]
#plt.plot(cnts)
cnts = np.log(cnts)
#去掉第一个点(仪器精度所致),去掉后面的背景噪音.
cnts = cnts[1:100]
x= range(0,len(cnts))
z1= np.polyfit(x,cnts,1)
p1= np.poly1d(z1)
xp= np.linspace(0,len(cnts))
plt.plot(x, cnts, '.', xp, p1(xp), '-')
plt.show() |
|