python写byte数组到文件_如何在Stata-Python-R中手动录入原始数据?

前言

自学Stata/Python/R的时候,跑模型啊、试命令啊,第一步是干嘛?找个数据呗~!

搞数据最简单的方法有3种,一是原始的手工录入;二是读入系统自带的数据;三就是读入现成的数据。今天我们先介绍第一种,手动从键盘录入数据。

好玩的是,今天,我们新三大统计软件Stata/Python/R的手工录入数据一起学!(Btw,老三大叫SPSS/SAS/Stata

1 Stata 手动录入数据

1.1 在互动命令窗口录入

使用的是Stata的 input 命令。语法如下:

input [varlist] [, automatic label]

说明:在变量名字之前可以指定变量的类型,比如下面的 name变量,其数据类型是str20。指定的方式又可以分为三种,大家具体参考下面代码一看就懂。

然后,这里顺便吐槽一下Stata第一种指定变量的方式。比如str20 name,这种参数空格变量的方式,也就是Stata和SAS等懒人专用的商业软件喜欢用。对于RPython编程,这种结构一看就显得莫名其妙,显得很不严谨。故更推荐用括号指定的方式,比如byte(age)或者float(height score)。这里,height和socre两个变量之间又没逗号分隔。完了,用Python的眼光看Stata,真是有点不顺眼。

 . input str20 name byte(age) float(height score) //从命令窗口输入。得到以下结果

                     name       age     height      score
  1. 

5752672262d95a172b49173141e6ab5d.png

接着,直接从命令窗口直接录入一条观测数据,如上图所示。这里要注意:

  • 各变量数据之间用空格隔开。按Enter键录入一条数据
  • 如果想一次录入多条数据,用Ctrl+Enter键进行换行
  • 输入字符型数据比如人名Steph的时候,用英文单引号'Steph',而不是双引号(Python可以混用)
  • end命令,表示录入结束

dc6d2fcc5b022f082f97f914f4b8d224.png

此时,我们已经在Stata内存用拥有了一个数据框(借助R和Python的数据格式概念,就是数据表的意思)。如果我们想

  • 增加一个新的变量,则先输入input weight(默认类型是浮点型),再录入新的数据。这里注意结果窗口的编号。表示观测值的索引(第几个观测值)

e9f2509596ef4fb3fd71cdc9f1116829.png
  • 增加一条数据,则先输入input命令,再录入数据

8b93d9110e815d49a72a6a4057ed78e8.png

当然,用do来录入是一个更明智的做法。完整命令如下:

.input str20 name byte(age) float(height score)
"Steph" 32 1.92 97
.end

.input weight
.90
.end

.input
."LeBron" 36 2.06 99 120
.end

b2c9def3c4211b06d09203f53df195bd.png

1.2 在数据编辑窗口

这个是鼠标点击编辑模式,简单易学。鼠标+键盘可以录入数据,修改变量的属性,大家试试就会了。界面大致如下图。

7c19d6c37446ea69118cc8a5e1d59923.png

48c0c6463a3e843c35bf7dbb470a4af3.png

2 Python手动录入数据

2.1 屏幕输入函数

和Stata的input命令类似的,Python有一个专用的通过键盘和屏幕录入数据的input函数。不过input函数一次只能录入一个结果,且默认是字符串。如果想一次性录入一条观测值,则可以考虑一次性录入完整的一条字符串,然后通过分割函数将结果转换,然后赋值给对应的变量。除了input函数,Python还有另外一个功能更多的sys包中的sys.stdin函数。然而这两个函数都是面向传统开发,而不是数据科学,因此通常不推荐使用。

2.2 NumPy二维数组

  • 相对而言,Python在代码中录入数据更为灵活,也更为常用。代码具体的实现方法包括通过NumPy包,简单的直接赋值给一个数据二维的数组。
import numpy as np  ##导入NumPy包
Xs = np.array([['Steph', 32, 1.92, 97],
      ['LeBron', 36, 2.06, 99]])
Xs
Out[8]: 
array([['Steph', '32', '1.92', '97'],
       ['LeBron', '36', '2.06', '99']], dtype='<U6')

需要注意的是,这个只是数组,也就数据表(框)的数据主体,并没有包含变量(列)的名称。所以,这当然不是我们想要的。

2.3 pandas数据框

正确的方法应该是使用pandas包(暂时忘了NumPy吧)。pandas可以“精细化”地处理二维的数据表格,让用户更加深入地了解数据框的结构。

import pandas as pd ##导入pandas包
data = {'name': ['Steph', 'LeBron'], ##用字典的方式,完成数据一列一列的输入
        'age': [32, 36 ],
        'height': [1.92, 2.06],
        'score': [97, 99]}

labels = ['a', 'b'] 
df1 = pd.DataFrame(data, index=labels) ##用列表labels的取值来当成每行的索引
df1
Out[9]: 
     name  age  height  score
a   Steph   32    1.92     97
b  LeBron   36    2.06     99

##添加新行(新的观测值)
df1.loc['c'] = ['Harden', '32', 1.96, 98]
df1

Out[10]: 
     name age  height  score
a   Steph  32    1.92     97
b  LeBron  36    2.06     99
c  Harden  32    1.96     98

2.4 open函数:在Python代码中逐个元素写入/读出csv文件

在练习Python算法和数据结构的时候,我们可能不止需要将数据临时保存在列表、字典或者数据框中,还可能需要将他们逐个元素写到一个文档中(如csv,至于将内存中的整个数据保存到csv或者xlsx中是一个非常常规的数据保存操作,这里不讨论)。回到逐个元素的读写。

## 使用open函数的with...as结构来写
data = [[1,2,3],[4,5,6]]
with open(r'd:data.csv', 'w') as fp:
    for line in data:
        ok = fp.write('%sn'%','.join([str(item) for item in line]))

新生成的csv文件如下图:

965ace20feca513a56f13a4a957ac90f.png
## with...as从csv文件中逐个读取数据
numlist = list()
with open(r'd:data.csv', 'r') as fp: ##r = read, 表示读出数据
    for line in fp.readlines():
        numlist.append([int(f) for f in line.strip().split(',')])
numlist
Out[39]: [[1, 2, 3], [4, 5, 6]]

3 R语言的手动录入数据

RStudio里面数据框查看器好像是不能编辑变量和数据的。那就好好写代码吧。

> library(dplyr) # 能整理数据框的R包很多。这里我们使用dplyr
> ##一个变量 = 一列 = 一个向量
> name <- c("Steph","LeBron")
> age <- c(32, 36)
> height <- c(1.92,2.06)
> score <- c(97,99)
> df1 <- data.frame(name, age, height, score)  ##行的名称使用了默认的数字编码
> df1
    name age height score
1  Steph  32    1.92    97
2 LeBron  36    2.06    99
> df1 <- df1 %>% add_row(name="Harden", age=32, height=1.96, score=98) ##增加一个新行
> df1
    name age height score
1  Steph  32 1.92    97
2 LeBron  36 2.06    99
3 Harden  32 1.96    98
> df1$weight <- c(90, 110, 100) ##增加一个新列。用了最简单的方法
> df1
    name age height score weight
1  Steph  32 1.92    97     90
2 LeBron  36 2.06    99    110
3 Harden  32 1.96    98    100

4 小结:

  • 虽说Stata没有Python和R那么细致严谨,但用起来效率最高啊
  • Python的优点R也有,毕竟人家是统计之王嘛。它俩有些地方类似,比如逐列录入、定义行和列的索引

最后:手工录入的数据简单快捷,但是毕竟还是太原始。那。。。有什么有高级且快捷的嘛?当然有咯。其实文章开头我们已经提到了——导入软件自带的案例数据。

好了,下一步,哦不,是下一篇文章,我们将介绍如何导入Stata/Python/R自带的数据集。


如果有用,烦劳点个赞同▲感谢♥︎

(全文结束)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonStata都是数据分析领域常用的工具,它们各有优缺点,具体使用哪个要根据具体需求而定。下面是两者的比较: 1. 功能方面 Python是一门通用编程语言,可以用来进行数据分析、机器学习、Web开发等多种应用。Python有大量的数据分析库,如NumPy、Pandas、Scipy和Matplotlib等,还有一些强大的机器学习框架,如TensorFlow、Keras和PyTorch等。 Stata则是专业的统计分析软件,主要用于数据清洗、可视化和统计分析。Stata有丰富的数据操作和统计分析功能,特别擅长于面板数据分析和处理,也有一些可视化工具和机器学习功能。 2. 学习成本 Python作为一门通用编程语言,学习曲线相对较长,需要掌握基本的编程概念和语法,但是Python的社区非常活跃,有很多在线教程和课程,学习资源非常丰富。 Stata相对来说学习成本较低,因为它的语法比较简单明了,上手较快。同时Stata也有自己的官方文档和社区支持,可以帮助用户快速上手。 3. 数据处理速度 Python的数据处理速度相对较慢,特别是在处理大规模数据时,需要使用一些优化技巧,如向量化和并行计算等。 Stata在数据处理速度方面比较快,尤其是在数据清洗和面板数据分析方面表现出色。 综上所述,Python适合进行复杂的数据分析和机器学习任务,而Stata则适合进行简单的数据清洗和统计分析任务。但是,在实际应用,两者也可以结合使用,根据具体需求选择不同的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值