浅墨散人 浅墨散人
  • 基础
  • 设计模式
  • JVM
  • Maven
  • SpringBoot
  • 基础
  • Flask
  • Diango
  • Pandas
  • SqlAlchemy
  • Sqoop
  • Flume
  • Flink
  • Hadoop
  • Hbase
  • Hive
  • Kafka
  • Kylin
  • Zookeeper
  • Tez
  • MySQL
  • Doris
  • Chrome
  • Eclipse
  • IDEA
  • iTerm2
  • Markdown
  • SublimeText
  • VirtualBox
  • WebStrom
  • Linux
  • Mac
  • Hexo
  • Git
  • Vue
  • VuePress
  • 区块链
  • 金融
数据仓库
数据治理
读书笔记
关于我
GitHub (opens new window)
  • 基础
  • 设计模式
  • JVM
  • Maven
  • SpringBoot
  • 基础
  • Flask
  • Diango
  • Pandas
  • SqlAlchemy
  • Sqoop
  • Flume
  • Flink
  • Hadoop
  • Hbase
  • Hive
  • Kafka
  • Kylin
  • Zookeeper
  • Tez
  • MySQL
  • Doris
  • Chrome
  • Eclipse
  • IDEA
  • iTerm2
  • Markdown
  • SublimeText
  • VirtualBox
  • WebStrom
  • Linux
  • Mac
  • Hexo
  • Git
  • Vue
  • VuePress
  • 区块链
  • 金融
数据仓库
数据治理
读书笔记
关于我
GitHub (opens new window)
  • Pandas

    • Pandas
    • Pandas介绍
      • 介绍
      • 创建文件
      • 读取文件
        • 读取指定位置数据的Excel
      • 行、列、单元格
        • 创建Series
        • 把Series的数据加入dataframe
      • Sheet页
        • 读取多个文件,将文件内容以多个sheet的方式写入Excel中
    • PandasAPI
  • Python
  • Pandas
2018-10-10
目录

Pandas介绍

# 介绍

pandas是python的一个强大的数据分析工具

官方文档 (opens new window)

pypandas中文 (opens new window)

pandas中文翻译 (opens new window)

在线的ipython编辑器 (opens new window)

# 创建文件

创建文件可以直接使用pd对象的to_excel函数即可

data = [
    {"id":1 , "username":'张三'},
    {"id":2 , "username":'李四'}
]

df = pd.DataFrame(data)
# 设置索引,第一列,默认情况下会生成一个索引列(序号),set_index会返回一个DataFrame,所以这里需要df重新赋值
df = df.set_index("id")
df.to_excel("/Users/fangzheng/Downloads/pandas_excel.xlsx")
print("Done!")
1
2
3
4
5
6
7
8
9
10

保存后的结果如下所示:

image-20181216162246393

其中,df中有很多保存为文件的函数(如下)

image-20181216162032872

# 读取文件

读取文件可以使用pd的read开头函数

excel = pd.read_excel("/Users/fangzheng/Downloads/pandas_excel.xlsx")
print(excel.shape) # 获取(行数,列数)
print(excel.columns) # 获取所有列名
print(excel.head(1)) # 获取第一行
print(excel.head())
1
2
3
4
5

控制台打印结果:

/usr/local/bin/python3.7 /Users/fangzheng/PycharmProjects/pydemo/数据分析/pandas/create_excel.py
(2, 2)
Index(['id', 'username'], dtype='object')
   id username
0   1       张三
   id username
0   1       张三
1   2       李四
Process finished with exit code 0
1
2
3
4
5
6
7
8
9

# 读取指定位置数据的Excel

例如:如下Excel内容,数据不是从第一行第一列开始的,那读取的时候就需要指定读取的行和列坐标了

image-20181216170202156

代码如下:

# 读取指定行列的Excel,有些时候Excel里的数据不是在首行首列,那就需要指定读取的起始行和列
# skiprows:表示跳过几行,从第几行开始读
# usecols:表示读取的列,从C到F
df = pd.read_excel(file,skiprows=4,usecols='C:F')
print(df)
1
2
3
4
5

# 行、列、单元格

在pandas中,不管是行还是列,都可以用作series来表示,当把一个series加入一个dataframe里时可以指定是以行的方式插入还是以列的方式插入。所以,series既可以是行也可以是列。

# 创建Series

# 1、创建series方式1
d = {'x':100,'y':100,'z':300}  # d是一个python里的dict类型
s1 = pd.Series(d)  # 当把一个python的dict类型传递给series时,dict的key就是series的x,dict的value就是serise的y
print(s1)

# 2、创建series方式2
l1 = [100,200,300]
l2 = ['x','y','z']
s2 = pd.Series(l1,index=l2)
print(s2)

# 3、创建series方式3:直接指定x和y的值
s3 = pd.Series([100,200,300],index=['x','y','z'])
print(s3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

三种方式打印结果是一样的。

# 把Series的数据加入dataframe

s1 = pd.Series([1,2,3],index=[1,2,3],name='A')
s2 = pd.Series([10,20,30],index=[1,2,3],name='B')
s3 = pd.Series([100,200,300],index=[1,2,3],name='D')

# 以dict的方式把Series加入DataFrame中时,name为标题,index为行号
df = pd.DataFrame({s1.name:s1, s2.name:s2 , s3.name:s3})
print(df)

print('---------------------')
# 以list的方式把Series加入DataFrame中事,name为行号,index为标题
df2 = pd.DataFrame([s1,s2,s3])
print(df2)
1
2
3
4
5
6
7
8
9
10
11
12

结果如下

   A   B    D
1  1  10  100
2  2  20  200
3  3  30  300
---------------------
     1    2    3
A    1    2    3
B   10   20   30
D  100  200  300
1
2
3
4
5
6
7
8
9

# Sheet页

# 读取多个文件,将文件内容以多个sheet的方式写入Excel中

# 读取多个文件,将文件内容以多个sheet的方式写入Excel中
# read_table:从文件、url、文件型对象中加载带分隔符的数据,默认为'\t'。(read_csv默认分隔符是逗号)

result = '/Users/fangzheng/Downloads/result.xlsx'
df1 = pd.read_table('/Users/fangzheng/Downloads/a.txt')
df2 = pd.read_table('/Users/fangzheng/Downloads/b.txt')
df3 = pd.read_table('/Users/fangzheng/Downloads/c.txt')

writer = pd.ExcelWriter(result)
df1.to_excel(writer, sheet_name='中文1')
df2.to_excel(writer, sheet_name='中文2')
df3.to_excel(writer, sheet_name='中文3')

# 必须save,要不然不会保存到本地
writer.save()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

保存结果如下:

image-20181216173326035

#Python#Pandas
最后更新时间: 2022/7/23 10:17:11
Pandas
PandasAPI

← Pandas PandasAPI→

最近更新
01
分区分桶
08-21
02
数据模型(重要)
08-21
03
安装和编译
08-21
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式