课程链接:https://study.163.com/course/courseMain.htm?courseId=1005124008&share=1&shareId=1146477588
# 设定系统环境
import pandas as pd
pd.options.display.max_rows = 10 # 设定自由列表输出最多为10行
pd.__version__
# 显示当前Pandas版本号,默认输出最后一行内容(即使没有打印输出)
'1.1.0'
变量列就是一个有顺序的数据序列(一维数组),可以看作是一个增强版的list。 对应了numpy中的Series格式,偷懒的话直接用list格式提供即可,字典格式可以为每个字典元素提供名称,是最佳选择。
pd.DataFrame(
data = None : 数据列表,字典格式时直接同时提供变量名
columns = None : 变量名列表
)
df1 = pd.DataFrame(data = [[1,"test"], [2,"train"],
[3,"test"],[4,"train"]],
columns = [ 'var2', 'var3' ]
)
df1
var2 | var3 | |
---|---|---|
0 | 1 | test |
1 | 2 | train |
2 | 3 | test |
3 | 4 | train |
Series
python的原生数据结构中没有和数组对应的类型。
list虽然比较接近数组的需求,但是没有索引和排序功能。
pd.Series可以被简单理解为带索引的有序列表,从而能够更好的满足数据分析的需求。
s1 = pd.Series(["test","train","test","train"])
s1
0 test
1 train
2 test
3 train
dtype: object
pd.Series(data = ["test","train","test","train"], name = 'var3')
0 test
1 train
2 test
3 train
Name: var3, dtype: object
print(type(df1.var3))
df1.var3
0 test
1 train
2 test
3 train
Name: var3, dtype: object
df中的每一列实际上就是一个Series。
Series使用的很多命令都和DataFrame相似,可以直接套用。
pd.read_csv(
filepath_or_buffer :要读入的文件路径
sep = ‘,’:列分隔符
header = ‘infer’:指定数据中的第几行作为变量名
names = None :自定义变量名列表
index_col = None :将会被用作索引的列名,多列时只能使用序号列表
usecols = None :指定只读入某些列,使用索引列表或者名称列表均可。
encoding = None:读入文件的编码方式(utf-8/GBK,中文数据文件最好设定为utf-8)
na_values :指定将被读入为缺失值的数值列表,默认下列数据被读入为缺失值:
‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’,
‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’,
‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’
):读取csv格式文件,但也可通用于文本文件读取
df2 = pd.read_csv("univ.csv", encoding ="GBK")#使用英文名称,否则可能会报错
#把文件放到了该目录下,因此不需要再写路径,注意编码要写
df2
名次 | 学校名称 | 总分 | 类型 | 所在省份 | 所在城市 | 办学方向 | 主管部门 | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 北京大学 | 100.00 | 综合 | 北京 | 北京市 | 中国研究型 | 教育部 |
1 | 2 | 清华大学 | 98.50 | 理工 | 北京 | 北京市 | 中国研究型 | 教育部 |
2 | 3 | 复旦大学 | 82.79 | 综合 | 上海 | 上海市 | 中国研究型 | 教育部 |
3 | 4 | 武汉大学 | 82.43 | 综合 | 湖北 | 武汉市 | 中国研究型 | 教育部 |
4 | 5 | 浙江大学 | 82.38 | 综合 | 浙江 | 杭州市 | 中国研究型 | 教育部 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
95 | 96 | 浙江师范大学 | 63.37 | 师范 | 浙江 | 金华市 | 区域特色研究型 | 浙江省 |
96 | 97 | 安徽大学 | 63.34 | 综合 | 安徽 | 合肥市 | 区域研究型 | 安徽省 |
97 | 98 | 首都医科大学 | 63.32 | 医药 | 北京 | 北京市 | 区域特色研究型 | 北京市 |
98 | 99 | 江南大学 | 63.31 | 综合 | 江苏 | 无锡市 | 区域特色研究型 | 教育部 |
99 | 100 | 山西大学 | 63.29 | 综合 | 山西 | 太原市 | 区域研究型 | 山西省 |
100 rows × 8 columns
pandas.read_table():更通用的文本文件读取命令
主要的区别在于默认的sep="\t",即tab符号。
df2 = pd.read_table("univ.csv", sep=',',encoding ="gbk" )#注意sep
df2
名次 | 学校名称 | 总分 | 类型 | 所在省份 | 所在城市 | 办学方向 | 主管部门 | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 北京大学 | 100.00 | 综合 | 北京 | 北京市 | 中国研究型 | 教育部 |
1 | 2 | 清华大学 | 98.50 | 理工 | 北京 | 北京市 | 中国研究型 | 教育部 |
2 | 3 | 复旦大学 | 82.79 | 综合 | 上海 | 上海市 | 中国研究型 | 教育部 |
3 | 4 | 武汉大学 | 82.43 | 综合 | 湖北 | 武汉市 | 中国研究型 | 教育部 |
4 | 5 | 浙江大学 | 82.38 | 综合 | 浙江 | 杭州市 | 中国研究型 | 教育部 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
95 | 96 | 浙江师范大学 | 63.37 | 师范 | 浙江 | 金华市 | 区域特色研究型 | 浙江省 |
96 | 97 | 安徽大学 | 63.34 | 综合 | 安徽 | 合肥市 | 区域研究型 | 安徽省 |
97 | 98 | 首都医科大学 | 63.32 | 医药 | 北京 | 北京市 | 区域特色研究型 | 北京市 |
98 | 99 | 江南大学 | 63.31 | 综合 | 江苏 | 无锡市 | 区域特色研究型 | 教育部 |
99 | 100 | 山西大学 | 63.29 | 综合 | 山西 | 太原市 | 区域研究型 | 山西省 |
100 rows × 8 columns
df2.agg("count")
名次 100
学校名称 100
总分 100
类型 100
所在省份 100
所在城市 100
办学方向 100
主管部门 100
dtype: int64
pd.read_excel(
filepath_or_buffer:要读入的文件路径
sheet_name:要读入的表单,字符串或者数字序号均可,默认读入第一个
)
df2 = pd.read_excel("高校信息.xlsx", sheet_name = 0)
df2
名次 | 学校名称 | 总分 | 类型 | 所在省份 | 所在城市 | 办学方向 | 主管部门 | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 北京大学 | 100.00 | 综合 | 北京 | 北京市 | 中国研究型 | 教育部 |
1 | 2 | 清华大学 | 98.50 | 理工 | 北京 | 北京市 | 中国研究型 | 教育部 |
2 | 3 | 复旦大学 | 82.79 | 综合 | 上海 | 上海市 | 中国研究型 | 教育部 |
3 | 4 | 武汉大学 | 82.43 | 综合 | 湖北 | 武汉市 | 中国研究型 | 教育部 |
4 | 5 | 浙江大学 | 82.38 | 综合 | 浙江 | 杭州市 | 中国研究型 | 教育部 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
95 | 96 | 浙江师范大学 | 63.37 | 师范 | 浙江 | 金华市 | 区域特色研究型 | 浙江省 |
96 | 97 | 安徽大学 | 63.34 | 综合 | 安徽 | 合肥市 | 区域研究型 | 安徽省 |
97 | 98 | 首都医科大学 | 63.32 | 医药 | 北京 | 北京市 | 区域特色研究型 | 北京市 |
98 | 99 | 江南大学 | 63.31 | 综合 | 江苏 | 无锡市 | 区域特色研究型 | 教育部 |
99 | 100 | 山西大学 | 63.29 | 综合 | 山西 | 太原市 | 区域研究型 | 山西省 |
100 rows × 8 columns
pd.read_sas() # 必要时可以使用encoding选项
pd.read_spss() # 0.25 版之后新增
pd.read_stata()
df4 = pd.read_sas('air.sas7bdat')
df4
DATE | AIR | |
---|---|---|
0 | 1949-01-01 | 112.0 |
1 | 1949-02-01 | 118.0 |
2 | 1949-03-01 | 132.0 |
3 | 1949-04-01 | 129.0 |
4 | 1949-05-01 | 121.0 |
... | ... | ... |
139 | 1960-08-01 | 606.0 |
140 | 1960-09-01 | 508.0 |
141 | 1960-10-01 | 461.0 |
142 | 1960-11-01 | 390.0 |
143 | 1960-12-01 | 432.0 |
144 rows × 2 columns
pd.read_spss(
path : 要读入的文件路径
usecols = None : 需要读入的变量列表,list-like,默认全部读入
convert_categoricals = True : 是否将类别列转换为pd.Categorical
)
# read_spss()只能获取数据本身,数据的附加信息会全部丢失
# read_spss()无法直接读取GBK编码的数据文件
spssfile = pd.read_spss('air.sav')
spssfile.head()
DATE | AIR | |
---|---|---|
0 | 1949-01-01 | 112.0 |
1 | 1949-02-01 | 118.0 |
2 | 1949-03-01 | 132.0 |
3 | 1949-04-01 | 129.0 |
4 | 1949-05-01 | 121.0 |
pyreadstat包可以作为pandas的接口直接读写SAS、SPSS、Stata数据文件。
read_spss()本质上只是对pyreadstat包的简单调用。
除读入数据外,还可以提取完整的数据附加信息供使用。
#pip install pyreadstat
pyreadstat.read_sav(
filename_path : 需要读取的文件路径,utf-8格式。
encoding = None : 指定数据读入的编码,iconv-compatible名称。
usecols : 需要读入的变量列,list格式。
metadataonly = False : 只读取matadata,不读取具体数据.
apply_value_formats = False : 用值标签代替原始数值读入。如果变量值为true,0代表男,1代表女,那么读入时候把0换成男,1会换成女。
formats_as_category = True : 当apply_value_formtas为True时,是否将设定格式的变量值转化为pd.categories。
user_missing = False : 是否按原值读入自定义缺失值,否则一律读入为nan。
dates_as_pandas_datetime = False : 将date转换为pd.datetime64格式。
disable_datetime_conversion = False : 是否自动转换日期时间变量,否则一律按照数值读入。
row_limit = 0 : 读入的最大行数,0为无限制。
row_offset = 0 : 读入时跳开前多少行。
)
#返回两个数据,因此最好用两个变量接受,不然会变成元组:
data_frame : 包括全部数据
metadata : 包括附加信息的metadata对象
# 直接用pyreadstat包可以取出更多信息
import pyreadstat
df, meta = pyreadstat.read_sav("ccss_sample.sav", encoding = "GBK")
df.head()
time | id | s0 | s2 | s3 | s4 | s5 | s7 | s9 | c0_1 | ... | Qs9 | Qa3 | Qa4 | Qa8 | Qa9 | Qa10 | Qa16 | index1 | index1a | index1b | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 200704.0 | 1.0 | 100.0 | 1.0 | 20.0 | 4.0 | 3.0 | 2.0 | 4.0 | 2.0 | ... | 2500.0 | 100.0 | 200.0 | 200.0 | 200.0 | 100.0 | 100.0 | 109.349371 | 88.035919 | 121.071238 |
1 | 200704.0 | 2.0 | 100.0 | 1.0 | 24.0 | 2.0 | 3.0 | 2.0 | 8.0 | 2.0 | ... | 7000.0 | 100.0 | 100.0 | 100.0 | 150.0 | 200.0 | 100.0 | 93.728032 | 88.035919 | 96.856991 |
2 | 200704.0 | 3.0 | 200.0 | 1.0 | 20.0 | 2.0 | 9.0 | 2.0 | 2.0 | 2.0 | ... | 1250.0 | 100.0 | 150.0 | 150.0 | 100.0 | 100.0 | 100.0 | 93.728032 | 88.035919 | 96.856991 |
3 | 200704.0 | 4.0 | 100.0 | 2.0 | 65.0 | 3.0 | 1.0 | 1.0 | 2.0 | 2.0 | ... | 1250.0 | 150.0 | 150.0 | 100.0 | 100.0 | 100.0 | 200.0 | 109.349371 | 154.062858 | 84.749867 |
4 | 200704.0 | 5.0 | 200.0 | 2.0 | 40.0 | 2.0 | 3.0 | 1.0 | NaN | 2.0 | ... | NaN | 100.0 | 100.0 | 100.0 | 100.0 | 150.0 | 100.0 | 85.917363 | 88.035919 | 84.749867 |
5 rows × 32 columns
meta.column_labels#读入列变量名称的标签的附加信息
['月份',
'ID',
'S0. 城市',
'S2. 性别',
'S3. 年龄',
'S4. 学历',
'S5. 职业',
'S7. 婚姻状况',
'S9. 家庭月收入',
......
'A9. 那么您认为一年之后本地区的就业状况将会如何变化?',
None,
None,
None,
'总指数',
'现状指数',
'预期指数']
meta.column_names_to_labels#读入名称和变量名称之间的
{'O1': 'O1. 是否拥有家用轿车',
'Qa10': None,
'Qa16': None,
'Qa3': None,
'Qa4': None,
'Qa8': None,
......
'index1a': '现状指数',
'index1b': '预期指数',
's0': 'S0. 城市',
's2': 'S2. 性别',
's3': 'S3. 年龄',
's4': 'S4. 学历',
's5': 'S5. 职业',
's7': 'S7. 婚姻状况',
's9': 'S9. 家庭月收入',
'time': '月份'}
meta.value_labels
#变量值标签,label0就指代第一个变量,apply_value_formats可实现该转换
{'labels0': {100.0: '100北京', 200.0: '200上海', 300.0: '300广州'},
'labels1': {1.0: '男', 2.0: '女'},
'labels10': {1.0: '1 非常好',
2.0: '2 比较好',
3.0: '3 保持现状',
4.0: '4 比较差',
5.0: '5 非常差',
9.0: '9 说不清/拒答'},
......
'labels9': {0.0: '中性原因',
10.0: '改善:收入相关',
20.0: '改善:就业状况相关',
30.0: '改善:投资相关',
40.0: '改善:家庭开支相关',
50.0: '改善:政策/宏观经济',
90.0: '不知道/拒答',
110.0: '恶化:收入相关',
120.0: '恶化:就业状况相关',
130.0: '恶化:投资相关',
140.0: '恶化:家庭开支相关',
150.0: '恶化:政策/宏观经济相关'}}
# 这里的得到的res实际上是tuple(元组)
res = pyreadstat.read_sav("ccss_sample.sav",
encoding = "GBK",
apply_value_formats = True)
res[0].head()
time | id | s0 | s2 | s3 | s4 | s5 | s7 | s9 | c0_1 | ... | Qs9 | Qa3 | Qa4 | Qa8 | Qa9 | Qa10 | Qa16 | index1 | index1a | index1b | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 200704.0 | 1.0 | 100北京 | 男 | 20.0 | 本科 | 公司普通职员(白领) | 未婚 | 2000-2999元 | 2 无 | ... | 2500.0 | 100.0 | 200.0 | 200.0 | 200.0 | 100.0 | 100.0 | 109.349371 | 88.035919 | 121.071238 |
1 | 200704.0 | 2.0 | 100北京 | 男 | 24.0 | 高中/中专 | 公司普通职员(白领) | 未婚 | 6000-7999元 | 2 无 | ... | 7000.0 | 100.0 | 100.0 | 100.0 | 150.0 | 200.0 | 100.0 | 93.728032 | 88.035919 | 96.856991 |
2 | 200704.0 | 3.0 | 200上海 | 男 | 20.0 | 高中/中专 | 无业/待业/失业/家庭主妇 | 未婚 | 1000-1499元 | 2 无 | ... | 1250.0 | 100.0 | 150.0 | 150.0 | 100.0 | 100.0 | 100.0 | 93.728032 | 88.035919 | 96.856991 |
3 | 200704.0 | 4.0 | 100北京 | 女 | 65.0 | 大专 | 企/事业管理人员 | 已婚 | 1000-1499元 | 2 无 | ... | 1250.0 | 150.0 | 150.0 | 100.0 | 100.0 | 100.0 | 200.0 | 109.349371 | 154.062858 | 84.749867 |
4 | 200704.0 | 5.0 | 200上海 | 女 | 40.0 | 高中/中专 | 公司普通职员(白领) | 已婚 | NaN | 2 无 | ... | NaN | 100.0 | 100.0 | 100.0 | 100.0 | 150.0 | 100.0 | 85.917363 | 88.035919 | 84.749867 |
5 rows × 32 columns
res[0].s9.head()
0 2000-2999元
1 6000-7999元
2 1000-1499元
3 1000-1499元
4 NaN
Name: s9, dtype: category
Categories (13, object): [1000-1499元, 10000-14999元, 1500-1999元, 15000-19999元, ..., 5000-5999元, 6000-7999元, 8000-9999元, 999元或以下]
读入数据表
pd.read_sql(
sql : 需要执行的SQl语句/要读入的表名称
con : SQLAlchemy连接引擎名称
index_col = None : 将被用作索引的列名称
columns = None : 当提供表名称时,需要读入的列名称list
)
spssfile = pd.read_spss('air.sav')
spssfile.to_numpy()
array([[datetime.date(1949, 1, 1), 112.0],
[datetime.date(1949, 2, 1), 118.0],
[datetime.date(1949, 3, 1), 132.0],
[datetime.date(1949, 4, 1), 129.0],
[datetime.date(1949, 5, 1), 121.0],
......
[datetime.date(1960, 8, 1), 606.0],
[datetime.date(1960, 9, 1), 508.0],
[datetime.date(1960, 10, 1), 461.0],
[datetime.date(1960, 11, 1), 390.0],
[datetime.date(1960, 12, 1), 432.0]], dtype=object)
df3 = pd.read_csv("PM25\Beijing_2012_HourlyPM2.5_created20140325.csv",encoding ="gbk" )#注意sep
df3.iloc[2:]#从第三行开始输出数据
A fact sheet with definitions and metadata for this dataset can be found at http://www.stateair.net/web/historical/1/1.html. | Unnamed: 1 | Unnamed: 2 | Unnamed: 3 | Unnamed: 4 | Unnamed: 5 | Unnamed: 6 | Unnamed: 7 | Unnamed: 8 | Unnamed: 9 | Unnamed: 10 | |
---|---|---|---|---|---|---|---|---|---|---|---|
2 | Site | Parameter | Date (LST) | Year | Month | Day | Hour | Value | Unit | Duration | QC Name |
3 | Beijing | PM2.5 | 2012-1-1 0:00 | 2012 | 1 | 1 | 0 | 303 | 礸/mg? | 1 Hr | Valid |
4 | Beijing | PM2.5 | 2012-1-1 1:00 | 2012 | 1 | 1 | 1 | 215 | 礸/mg? | 1 Hr | Valid |
5 | Beijing | PM2.5 | 2012-1-1 2:00 | 2012 | 1 | 1 | 2 | 222 | 礸/mg? | 1 Hr | Valid |
6 | Beijing | PM2.5 | 2012-1-1 3:00 | 2012 | 1 | 1 | 3 | 85 | 礸/mg? | 1 Hr | Valid |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
8782 | Beijing | PM2.5 | 2012-12-31 19:00 | 2012 | 12 | 31 | 19 | 131 | 礸/mg?1 Hr | Valid | NaN |
8783 | Beijing | PM2.5 | 2012-12-31 20:00 | 2012 | 12 | 31 | 20 | 113 | 礸/mg?1 Hr | Valid | NaN |
8784 | Beijing | PM2.5 | 2012-12-31 21:00 | 2012 | 12 | 31 | 21 | 45 | 礸/mg?1 Hr | Valid | NaN |
8785 | Beijing | PM2.5 | 2012-12-31 22:00 | 2012 | 12 | 31 | 22 | 39 | 礸/mg?1 Hr | Valid | NaN |
8786 | Beijing | PM2.5 | 2012-12-31 23:00 | 2012 | 12 | 31 | 23 | 35 | 礸/mg?1 Hr | Valid | NaN |
8785 rows × 11 columns
bj2014 = pd.read_csv("PM25\Beijing_2014_HourlyPM25_created20150203.csv",encoding ="gbk",usecols=[0,1,2,3,4,5,6,7,8,9,10])
#注意sep,去掉文件开头的繁杂信息就可以了。
bj2014
Site | Parameter | Date (LST) | Year | Month | Day | Hour | Value | Unit | Duration | QC Name | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | Beijing | PM2.5 | 2014-1-1 0:00 | 2014 | 1 | 1 | 0 | 53 | 礸/m?1 Hr | Valid | NaN |
1 | Beijing | PM2.5 | 2014-1-1 1:00 | 2014 | 1 | 1 | 1 | 65 | 礸/m?1 Hr | Valid | NaN |
2 | Beijing | PM2.5 | 2014-1-1 2:00 | 2014 | 1 | 1 | 2 | 70 | 礸/m?1 Hr | Valid | NaN |
3 | Beijing | PM2.5 | 2014-1-1 3:00 | 2014 | 1 | 1 | 3 | 79 | 礸/m?1 Hr | Valid | NaN |
4 | Beijing | PM2.5 | 2014-1-1 4:00 | 2014 | 1 | 1 | 4 | 92 | 礸/m?1 Hr | Valid | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
8755 | Beijing | PM2.5 | 2014-12-31 19:00 | 2014 | 12 | 31 | 19 | 10 | 礸/m?1 Hr | Valid | NaN |
8756 | Beijing | PM2.5 | 2014-12-31 20:00 | 2014 | 12 | 31 | 20 | 10 | 礸/m?1 Hr | Valid | NaN |
8757 | Beijing | PM2.5 | 2014-12-31 21:00 | 2014 | 12 | 31 | 21 | 8 | 礸/m?1 Hr | Valid | NaN |
8758 | Beijing | PM2.5 | 2014-12-31 22:00 | 2014 | 12 | 31 | 22 | 12 | 礸/m?1 Hr | Valid | NaN |
8759 | Beijing | PM2.5 | 2014-12-31 23:00 | 2014 | 12 | 31 | 23 | 20 | 礸/m?1 Hr | Valid | NaN |
8760 rows × 11 columns
bj2012 = pd.read_csv("PM25\Beijing_2012_HourlyPM2.5_created20140325.csv",encoding ="gbk",skiprows=2)#注意sep
bj2012
Unnamed: 0 | Unnamed: 1 | Unnamed: 2 | Unnamed: 3 | Unnamed: 4 | Unnamed: 5 | Unnamed: 6 | Unnamed: 7 | Unnamed: 8 | Unnamed: 9 | Unnamed: 10 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | Site | Parameter | Date (LST) | Year | Month | Day | Hour | Value | Unit | Duration | QC Name |
1 | Beijing | PM2.5 | 2012-1-1 0:00 | 2012 | 1 | 1 | 0 | 303 | 礸/mg? | 1 Hr | Valid |
2 | Beijing | PM2.5 | 2012-1-1 1:00 | 2012 | 1 | 1 | 1 | 215 | 礸/mg? | 1 Hr | Valid |
3 | Beijing | PM2.5 | 2012-1-1 2:00 | 2012 | 1 | 1 | 2 | 222 | 礸/mg? | 1 Hr | Valid |
4 | Beijing | PM2.5 | 2012-1-1 3:00 | 2012 | 1 | 1 | 3 | 85 | 礸/mg? | 1 Hr | Valid |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
8780 | Beijing | PM2.5 | 2012-12-31 19:00 | 2012 | 12 | 31 | 19 | 131 | 礸/mg?1 Hr | Valid | NaN |
8781 | Beijing | PM2.5 | 2012-12-31 20:00 | 2012 | 12 | 31 | 20 | 113 | 礸/mg?1 Hr | Valid | NaN |
8782 | Beijing | PM2.5 | 2012-12-31 21:00 | 2012 | 12 | 31 | 21 | 45 | 礸/mg?1 Hr | Valid | NaN |
8783 | Beijing | PM2.5 | 2012-12-31 22:00 | 2012 | 12 | 31 | 22 | 39 | 礸/mg?1 Hr | Valid | NaN |
8784 | Beijing | PM2.5 | 2012-12-31 23:00 | 2012 | 12 | 31 | 23 | 35 | 礸/mg?1 Hr | Valid | NaN |
8785 rows × 11 columns
df.to_csv(
filepath_or_buffer:要保存的文件路径
sep = ‘,’ :列分隔符
columns :需要导出的变量列表
header = True :指定导出数据的新变量名,可直接提供list
index = True :是否导出索引
mode = ‘w’ : Python写模式,读写方式:r , r+ , w , w+ , a , a+
encoding = ‘utf-8’ :默认导出的文件编码格式
)
df2.to_csv('temp.txt', columns =['名次','总分'], header = ['名次2','总分2'], index = False)
#header要和表列的个数相对应
excel上面to_csv的命令也可以用,同时注意下面的命令
df.to_excel(
filepath_or_buffer:要读入的文件路径
sheet_name = ‘Sheet1’ :要保存的表单名称
)
df2.to_excel('temp.xlsx', index = False, sheet_name = 'data')
pyreadstat.write_sav(
df : 要保存的df名称。
dst_path : 要保存的sav/zsav文件路径及名称。
compress = Flase : 是否保存为压缩的zsav格式。
column_labels : 所保存文件的变量名标签list。(list必须和变量列等长,无标签的用None表示。)
variable_value_labels : 所保存文件的变量值标签,dict格式。(key为变量名,value为具体数值和值标签的dict。)
missing_ranges : 用户自定义缺失值,dict格式。(key为变量名,value为list格式。list元素的设定格式和SPSS中的格式相同。)
variable_measure : 变量测量尺度,dict格式。(dict的values为 “nominal”, “ordinal”, “scale” or “unknown” 。)
note : 所保存文件的文件注释。
file_label : 所保存文件的文件标签。
variable_display_width : 变量列显示宽度,dict格式。
)
spssfile = pd.read_spss('air.sav')
spssfile.head()
DATE | AIR | |
---|---|---|
0 | 1949-01-01 | 112.0 |
1 | 1949-02-01 | 118.0 |
2 | 1949-03-01 | 132.0 |
3 | 1949-04-01 | 129.0 |
4 | 1949-05-01 | 121.0 |
# 如果外部文件已存在,命令不会被执行,且不报错。
pyreadstat.write_sav(spssfile, 'tmp.sav',
column_labels = [None, 'var b'],
variable_value_labels = {
'AIR' : {
1 : 'a',
2 : 'b'}})
df.to_sql(
name : 将要存储数据的表名称
con : SQLAlchemy引擎/DBAPI2连接引擎名称
if_exists = ‘fail’ : 指定表已经存在时的处理方式
( fail : 不做任何处理(不插入新数据)
replace : 删除原表并重建新表
append : 在原表后插入新数据 )
index = True : 是否导出索引
)
bj2012.to_excel('bj2012.xlsx', index = False,
sheet_name = 'data',header=False)
#如果已经有源文件,保证原文件关闭
#header=False 可以把unnamed哪一行去掉
bj2012.to_csv('bj2012.csv', index = False, header=False)
bj2012.to_csv('bj2012.txt', index = False, header=False)