对于μ子实验数据进行快速处理与分析

  • 实验中心网站上有μ子实验的链接: μ子寿命测量, 里面获得的原始数据可以利用python进行快速分析与作图.
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()
  • course/python/muon.txt
  • 最后更改: 2017/01/13 13:35
  • (外部编辑)