如何在Jupyter Notebook中快速创建StackOverflow上的DataFrame样本
在Jupyter Notebook中高效创建指定Pandas DataFrame的方法
我平时在Jupyter里复现这类样本数据时,最常用的是下面几个方法,省心又高效,按便捷度排序:
方法1:直接用pd.DataFrame构造(适合数据量小的场景)
直接把每行数据写成列表嵌套的形式,再指定列名,一步到位。这种方式直观,适合数据行数少的情况,复制粘贴数据就行,不容易出错:
import pandas as pd # 把样本数据按行整理成列表 data = [ [-0.420430, -0.394562, 0.760232, 0.152246, -0.671229], [0.388447, 0.676054, -0.058273, -0.246588, 0.811332], [-0.498263, -0.108011, 0.952489, 0.504729, -0.385724], [1.069371, 0.143752, 0.414916, -1.180362, -0.029045], [-0.245684, -0.150180, 0.210579, 0.063154, 0.261488], [0.064939, -0.396667, 0.857411, -0.460206, 0.039658] ] # 创建DataFrame并指定列名 df = pd.DataFrame(data, columns=['a', 'b', 'c', 'd', 'e'])
方法2:用io.StringIO读取原始文本块(高效且无需手动拆分数据)
如果不想手动把每行数据拆成列表,直接复制题目里的原始文本块,用io.StringIO把它转换成可读取的“文件对象”,再用pd.read_csv读取,这是我最推荐的方式——完全不用修改原始数据格式,复制粘贴即可:
import pandas as pd from io import StringIO # 直接复制题目里的原始文本,包括表头 raw_text = """a b c d e 0 -0.420430 -0.394562 0.760232 0.152246 -0.671229 1 0.388447 0.676054 -0.058273 -0.246588 0.811332 2 -0.498263 -0.108011 0.952489 0.504729 -0.385724 3 1.069371 0.143752 0.414916 -1.180362 -0.029045 4 -0.245684 -0.150180 0.210579 0.063154 0.261488 5 0.064939 -0.396667 0.857411 -0.460206 0.039658""" # 用任意数量空格作为分隔符读取文本 df = pd.read_csv(StringIO(raw_text), sep='\s+')
这里sep='\s+'表示适配任意数量的空格分隔,完美匹配题目里的文本格式。
补充:如果是模拟类似随机数据(非指定值)
如果只是需要生成类似的随机浮点数据,而不是完全和题目一致的数值,可以用numpy快速生成:
import pandas as pd import numpy as np # 生成6行5列的随机正态分布数据 df = pd.DataFrame(np.random.randn(6,5), columns=['a','b','c','d','e'])
不过这个方法只适合模拟场景,如果你需要完全匹配题目里的样本数据,还是前两个方法更靠谱。
内容的提问来源于stack exchange,提问作者R.yan
相关产品推荐
相关产品推荐

