本文介绍了在 Python 中创建虚拟或随机数据以供练习的各种方法。与 R 一样,我们可以使用 pandas 和 numpy 包创建虚拟数据框。大多数分析师在 MS Excel 中准备数据。后来他们将其导入 Python 以磨练他们在 Python 中的数据整理技能。这不是一种有效的方法。有效的方法是在 Python 中准备随机数据,稍后将其用于数据操作。
目录
1. 在编辑器窗口中手动输入数据
第一步是加载 pandas 包和使用DataFrame 函数
import pandas as pd
data = pd.DataFrame({"A" : ["John","Deep","Julia","Kate","Sandy"],
"MonthSales" : [25,30,35,40,45]})
A MonthSales
0 John 25
1 Deep 30
2 Julia 35
3 Kate 40
4 Sandy 45
注意: 字符值应在单引号或双引号中定义。
如果您注意到 pandas 数据框的语法,列和行值是在字典中定义的。如果你理解字典的概念,你就不需要搞砸在哪里添加{ }和[ ]。
Dataframe 的语法:pd.DataFrame(dictionary)
d = {"A" : ["John","Deep","Julia","Kate","Sandy"],
"MonthSales" : [25,30,35,40,45]}
pd.DataFrame(d)
2.从剪贴板读取数据
一般来说,MS Excel 是分析师最喜欢的报告工具,尤其是在创建虚拟数据时。人们通常更喜欢在 Excel 中输入数据并将其粘贴到 Python 以创建数据框。在 pandas 中,有一个选项可以使用pandas 包中的read_clipboard()函数从剪贴板导入数据(即复制的数据)。
import pandas as pd
df = pd.read_clipboard()
Name Score Section
0 W 26 A
1 M 62 A
2 Q 69 A
3 Y 86 A
4 J 16 B
5 A 83 B
6 O 53 D
7 C 35 D
8 S 68 D
9 P 98 D
10 Q 42 E
3. 像SAS一样将数据输入Python
与 SAS 类似,我们可以在编辑器窗口中输入带有定界符或分隔符的数据。我们可以使用任何分隔符——逗号、空格、制表符等。
import pandas as pd
from pandas.compat import StringIO
text = """
Name,Score,Section
W,26,A
M,62,A
Q,69,A
"""
df =pd.read_csv(StringIO(text))
import pandas as pd
from pandas.compat import StringIO
text = """
Name Score Section
W 26 A
M 62 A
Q 69 A
"""
df =pd.read_csv(StringIO(text), sep="\s+")
\s+表示读取数据时用一个或多个空格作为分隔符。
4. 使用数字和字符值序列准备数据
让我们为此任务导入两个流行的 python 包——string 和 numpy。包字符串用于生成一系列字母表。而 numpy 包用于生成按特定值递增的数字序列。
import pandas as pd
import string
import numpy as np
data2 = pd.DataFrame({"A": np.arange(1,10,2),
"B" : list(string.ascii_lowercase)[0:5],
})
A B
0 1 a
1 3 b
2 5 c
3 7 d
4 9 e
说明
1.np.arange(1,10,2)告诉 python 生成 1 到 10 之间的值,递增 2。
2.string.ascii_lowercase返回 abcdefghijklmnopqrstuvwxyz。list(string.ascii_lowercase)[0:5] 用于选择前 5 个字母。
5.生成随机数据
在 numpy 中,有很多函数可以生成随机值。两个最流行的随机函数是random.randint( )和random.normal( )
import pandas as pd
import numpy as np
np.random.seed(1)
data3 = pd.DataFrame({"C" : np.random.randint(low=1, high=100, size=10),
"D" : np.random.normal(0.0, 1.0, size=10)
})
C D
0 38 -0.528172
1 13 -1.072969
2 73 0.865408
3 10 -2.301539
4 76 1.744812
5 6 -0.761207
6 80 0.319039
7 65 -0.249370
8 17 1.462108
9 2 -2.060141
解释
np.random.seed(1)告诉 python 在下次运行时用这个种子生成相同的随机值。 np.random.randint(low=1, high=100, size=10)返回 1 到 100 之间的 10 个随机值。np.random.normal(0.0, 1.0, size=10)返回 10 个遵循标准正态分布的随机值,均值为0,标准差为 1。
检查正态分布的均值和标准差
np.round(np.std(np.random.normal(0.0, 1.0, size=1000)))
np.round(np.mean(np.random.normal(0.0,1.0, size=1000)))
Generate more than 1 random variable with a single function
np.random.randn(6, 4)告诉Python从4列的“标准正态分布”中生成6个随机值
np.random.seed(12)
df = pd.DataFrame(np.random.randn(6, 4),
index=list('abcdef'), columns=list('ABCD'))
A B C D
a 0.472986 -0.681426 0.242439 -1.700736
b 0.753143 -1.534721 0.005127 -0.120228
c -0.806982 2.871819 -0.597823 0.472457
d 1.095956 -1.215169 1.342356 -0.122150
e 1.012515 -0.913869 -1.029530 1.209796
f 0.501872 0.138846 0.640761 0.527333
6. 创建分类变量
在此步骤中,我们将创建两种类型的分类变量:
- 类别范围从 1 到 4
- 二进制变量 (0 / 1)
import pandas as pd
import numpy as np
np.random.seed(1)
data4 =pd.DataFrame({"X" : np.random.choice(range(1,5), 20, replace=True),
"X1" : np.where(np.random.normal(0.0, 1.0, size=20)<=0,0,1)})
X X1
0 2 1
1 4 0
2 1 1
3 1 0
4 4 1
5 2 0
6 4 0
7 2 0
8 4 1
9 1 0
10 1 0
11 2 0
12 1 1
13 4 1
14 2 0
15 1 1
16 3 1
17 2 1
18 3 1
19 1 0
解释
- np.random.choice(range(1,5), 20, replace=True) 表示生成1到4(不包括5)的20个值并替换(即重复值)。
- np.where(np.random.normal(size=20)<=0,0,1) 意味着如果随机值是零或负,则将其设为 0。否则为1。np.where( ) 用于构造 IF- Python 中的 ELSE 语句。
与 R 的 factor() 函数一样,您可以将变量定义为分类变量。请参阅下面的代码。
data4.X = data4.X.astype("category")
data4.X1 = data4.X1.astype("category")
7. 导入 CSV 或 Excel 文件
使用 pandas 函数read_csv( ) 和read_excel( ) 函数,您可以将数据从 excel 或 CSV 读取到 Python。
import pandas as pd
mydata= pd.read_csv("C:\Users\Deepanshu\samplefile.csv")
mydata = pd.read_excel("C:\Users\Deepanshu\samplefile.xlsx")