2018-10-03 13:45:40 niruoanhaoshiqintian 阅读数 874
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1908 人正在学习 去看看 覃秉丰

Pandas文件读取常用的数据操作方法

本篇博客是接着上篇博客python数据分析处理库-Pandas数据读取、索引与计算

import pandas
food_info = pandas.read_csv("food_info.csv") #读取与本python文件同一目录下的food_info.csv文件
food_info.sort_values("列名", inplace=True) #对文件该列进行排序,inplace=True表示排序后覆盖此列
                                             (默认从小到大排序)
food_info.sort_values("列名", inplace=True,ascending=False) #同上,区别是从大到小排序

-----除去列中的为空NaN(NaN)的元素
lie = food_info["列名"]
lie.loc[0:10] #切片方式查看前10个元素
lie_is_null = pandas.isnull(lie) #查看该列为空(NaN)的所有元素,是空的返回true,不空返回false
lie_null_true = lie[lie_is_null] #查看该列为空(NaN)的所有元素,当然返回都是NaN
len(lie_null_true) #查看该列为空(NaN)的元素有多少个
lie_not_null = food_info["列名"].[lie_is_null == False] #查看该列不为空(NaN)的所有元素

food_info["列名"].mean() #求该列的平均值

-----以列名1为索引,将列名1中相同的元素对应的列名2中的值加起来求平均值,默认是aggfunc=np.mean
food_info.pivot_table(index="列名1", values="列名2", aggfunc=np.mean)

-----以列名1为索引,将列名1中相同的元素对应的列名2和列名3中的值加起来分别求和
food_info.pivot_table(index="列名1", values=["列名2", "列名3"], aggfunc=np.sum)

-----将列名1和列名2中为空(NaN)的丢掉
food_info.dropna(axis=0, subset=["列名1", "列名2"])

-----定位到某个元素,行列分别是:83为行数和列名
food_info.loc(83, "列名")

希望对大家有帮助

2018-10-02 21:29:37 niruoanhaoshiqintian 阅读数 599
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1908 人正在学习 去看看 覃秉丰

Pandas数据读取、索引与计算

Pandas数据结构为DataFrame,里面可以同时是int、float、object(string类型时)、datatime、bool数据类型

import pandas
food_info = pandas.read_csv("food_info.csv") #读取与本python文件同一目录下的food_info.csv文件
print(type(food_info)) #打印该food_info类型为DataFrame类型
food_info.head(6) #表格形式读取前6条数据,默认为5条
food_info.tail(4) #表格形式读取尾4条数据
food_info.columns #读取所有数据的列名
food_info.shape #查看该文件维度,多少行多少列
food_info.loc[0] #读取该文件第1个数据
food_info.loc[3:6] #读取该文件第3到6的数据
food_info["列名"] #读取该文件某一列的数据
food_info["列名1","列名2"] #读取该文件列1和列2两列的数据
food_info.columns.tolist() #读取所有数据的列名并做成list
food_info["列名"] / 1000  #读取该文件某一列的数据(int型)每个元素都除1000
food_info["列名1"]*food_info["列名2"] #读取该文件,将某两列的数据相乘(维度要一样)
food_info["新列名"] = 新变量  #添加新列到该文件(新变量与文件的列维度要一样)
food_info["列名"].max() #读取该文件某一列最大值

 

2017-11-09 17:43:13 baishuiniyaonulia 阅读数 1491
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1908 人正在学习 去看看 覃秉丰

假定所有操作都事先导入pandas

import pandas

我们以一个csv文件为例,来展示pandas是如何读取数据的:food_info
读入csv文件

food_info = pandas.read_csv("food_info.csv")

1、查看pandas的数据结构,pandas的数据结构为DataFrame类型

print(type(food_info))

OUT:

<class 'pandas.core.frame.DataFrame'>

2、查看pandas中的数据类型,pandas的数据类型包括int、float、object、datatime、bool,其中object指的是string值

print(food_info.dtypes)

OUT:

NDB_No               int64
Shrt_Desc           object
Water_(g)          float64
Energ_Kcal           int64
Protein_(g)        float64
Lipid_Tot_(g)      float64
…………………………
Cholestrl_(mg)     float64
dtype: object

3、查看官方帮助文档

print(help(pandas.read_csv))

OUT:

Help on function read_csv in module pandas.io.parsers:
…………………………
Returns
    -------
    result : DataFrame or TextParser

None

4、①查看DataFrame的前5行,如果有参数,则显示参数n表示的前n行

food_info.head()

OUT:
这里写图片描述

②查看DataFrame的后5行,如果有参数,则显示参数n表示的后n行

food_info.tail()

OUT:
这里写图片描述

5、返回每列的列名

print(food_info.columns)

OUT:

Index(['NDB_No', 'Shrt_Desc', 'Water_(g)', 'Energ_Kcal', 'Protein_(g)',
       'Lipid_Tot_(g)', 'Ash_(g)', 'Carbohydrt_(g)', 'Fiber_TD_(g)',
       'Sugar_Tot_(g)', 'Calcium_(mg)', 'Iron_(mg)', 'Magnesium_(mg)',
       'Phosphorus_(mg)', 'Potassium_(mg)', 'Sodium_(mg)', 'Zinc_(mg)',
       'Copper_(mg)', 'Manganese_(mg)', 'Selenium_(mcg)', 'Vit_C_(mg)',
       'Thiamin_(mg)', 'Riboflavin_(mg)', 'Niacin_(mg)', 'Vit_B6_(mg)',
       'Vit_B12_(mcg)', 'Vit_A_IU', 'Vit_A_RAE', 'Vit_E_(mg)', 'Vit_D_mcg',
       'Vit_D_IU', 'Vit_K_(mcg)', 'FA_Sat_(g)', 'FA_Mono_(g)', 'FA_Poly_(g)',
       'Cholestrl_(mg)'],
      dtype='object')

6、查看DataFrame的行列情况

print(food_info.shape)

OUT:

(8618, 36)

7、查看指定索引行的数据

print(food_info.loc[0])

OUT:

NDB_No                         1001
Shrt_Desc          BUTTER WITH SALT
Water_(g)                     15.87
Energ_Kcal                      717
Protein_(g)                    0.85
Lipid_Tot_(g)                 81.11
Ash_(g)                        2.11
Carbohydrt_(g)                 0.06
Fiber_TD_(g)                      0
Sugar_Tot_(g)                  0.06
Calcium_(mg)                     24
Iron_(mg)                      0.02
Magnesium_(mg)                    2
Phosphorus_(mg)                  24
Potassium_(mg)                   24
Sodium_(mg)                     643
Zinc_(mg)                      0.09
Copper_(mg)                       0
Manganese_(mg)                    0
Selenium_(mcg)                    1
Vit_C_(mg)                        0
Thiamin_(mg)                  0.005
Riboflavin_(mg)               0.034
Niacin_(mg)                   0.042
Vit_B6_(mg)                   0.003
Vit_B12_(mcg)                  0.17
Vit_A_IU                       2499
Vit_A_RAE                       684
Vit_E_(mg)                     2.32
Vit_D_mcg                       1.5
Vit_D_IU                         60
Vit_K_(mcg)                       7
FA_Sat_(g)                   51.368
FA_Mono_(g)                  21.021
FA_Poly_(g)                   3.043
Cholestrl_(mg)                  215
Name: 0, dtype: object

8、返回索引行切片值

print(food_info.loc[3:5])

OUT:

  NDB_No     Shrt_Desc  Water_(g)  Energ_Kcal  Protein_(g)  Lipid_Tot_(g)  \
3    1004   CHEESE BLUE      42.41         353        21.40          28.74   
4    1005  CHEESE BRICK      41.11         371        23.24          29.68   
5    1006   CHEESE BRIE      48.42         334        20.75          27.68   

   Ash_(g)  Carbohydrt_(g)  Fiber_TD_(g)  Sugar_Tot_(g)       ...        \
3     5.11            2.34           0.0           0.50       ...         
4     3.18            2.79           0.0           0.51       ...         
5     2.70            0.45           0.0           0.45       ...         

   Vit_A_IU  Vit_A_RAE  Vit_E_(mg)  Vit_D_mcg  Vit_D_IU  Vit_K_(mcg)  \
3     721.0      198.0        0.25        0.5      21.0          2.4   
4    1080.0      292.0        0.26        0.5      22.0          2.5   
5     592.0      174.0        0.24        0.5      20.0          2.3   

   FA_Sat_(g)  FA_Mono_(g)  FA_Poly_(g)  Cholestrl_(mg)  
3      18.669        7.778        0.800            75.0  
4      18.764        8.598        0.784            94.0  
5      17.410        8.013        0.826           100.0  

[3 rows x 36 columns]

9、返回某几行的索引值

two_five_ten = [2, 5, 10]
print(food_info.loc[two_five_ten])

OUT:

NDB_No             Shrt_Desc  Water_(g)  Energ_Kcal  Protein_(g)  \
2     1003  BUTTER OIL ANHYDROUS       0.24         876         0.28   
5     1006           CHEESE BRIE      48.42         334        20.75   
10    1011          CHEESE COLBY      38.20         394        23.76   

    Lipid_Tot_(g)  Ash_(g)  Carbohydrt_(g)  Fiber_TD_(g)  Sugar_Tot_(g)  \
2           99.48     0.00            0.00           0.0           0.00   
5           27.68     2.70            0.45           0.0           0.45   
10          32.11     3.36            2.57           0.0           0.52   

         ...        Vit_A_IU  Vit_A_RAE  Vit_E_(mg)  Vit_D_mcg  Vit_D_IU  \
2        ...          3069.0      840.0        2.80        1.8      73.0   
5        ...           592.0      174.0        0.24        0.5      20.0   
10       ...           994.0      264.0        0.28        0.6      24.0   

    Vit_K_(mcg)  FA_Sat_(g)  FA_Mono_(g)  FA_Poly_(g)  Cholestrl_(mg)  
2           8.6      61.924       28.732        3.694           256.0  
5           2.3      17.410        8.013        0.826           100.0  
10          2.7      20.218        9.280        0.953            95.0  

[3 rows x 36 columns]

10、①查看DataFrame的某一列

food_info["NDB_No"]

OUT:

0        1001
1        1002
2        1003
3        1004
4        1005
5        1006
6        1007
7        1008
8        1009
9        1010
10       1011
11       1012
12       1013
13       1014
14       1015
15       1016
16       1017
17       1018
18       1019
19       1020
20       1021
21       1022
22       1023
23       1024
24       1025
25       1026
26       1027
27       1028
28       1029
29       1030
        ...  
8588    43544
8589    43546
8590    43550
8591    43566
8592    43570
8593    43572
8594    43585
8595    43589
8596    43595
8597    43597
8598    43598
8599    44005
8600    44018
8601    44048
8602    44055
8603    44061
8604    44074
8605    44110
8606    44158
8607    44203
8608    44258
8609    44259
8610    44260
8611    48052
8612    80200
8613    83110
8614    90240
8615    90480
8616    90560
8617    93600
Name: NDB_No, Length: 8618, dtype: int64

②查看多列

col = ["Ash_(g)", "Fiber_TD_(g)"]
food_info[col]

OUT:

    Ash_(g) Fiber_TD_(g)
0   2.11    0.0
1   2.11    0.0
2   0.00    0.0
3   5.11    0.0
4   3.18    0.0
5   2.70    0.0
6   3.68    0.0
7   3.28    0.0
8   3.71    0.0
9   3.60    0.0
10  3.36    0.0
11  1.41    0.0
12  1.20    0.2
13  1.71    0.0
14  1.27    0.0
15  1.39    0.0
16  1.32    0.0
17  4.22    0.0
18  5.20    0.0
19  3.79    0.0
20  4.75    0.0
21  3.94    0.0
22  4.30    0.0
23  3.79    0.0
24  3.55    0.0
25  3.28    0.0
26  2.91    0.0
27  3.27    0.0
28  3.80    0.0
29  3.66    0.0
... ... ...
8588    2.00    2.6
8589    0.76    1.6
8590    0.29    1.0
8591    1.85    5.7
8592    1.22    4.2
8593    1.71    14.2
8594    0.52    2.0
8595    3.50    0.0
8596    0.80    2.1
8597    2.40    0.0
8598    0.40    0.0
8599    0.00    0.0
8600    0.00    0.1
8601    4.74    0.0
8602    13.90   27.8
8603    9.90    6.1
8604    0.22    0.1
8605    0.08    0.8
8606    0.35    2.6
8607    0.07    0.0
8608    5.70    10.1
8609    1.86    0.9
8610    6.80    0.8
8611    1.00    0.6
8612    1.40    0.0
8613    13.40   0.0
8614    2.97    0.0
8615    0.86    0.0
8616    1.30    0.0
8617    1.20    0.0
8618 rows × 2 columns

11、找出food_info文件中单位是g的数据

col_name = food_info.columns.tolist()
print(col_name)
print("__________")
gram_columns = []

for c in col_name:
    #endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False
    if c.endswith("(g)"):
        gram_columns.append(c)
gram_df = food_info[gram_columns]
print(gram_df.head())

OUT:

['NDB_No', 'Shrt_Desc', 'Water_(g)', 'Energ_Kcal', 'Protein_(g)', 'Lipid_Tot_(g)', 'Ash_(g)', 'Carbohydrt_(g)', 'Fiber_TD_(g)', 'Sugar_Tot_(g)', 'Calcium_(mg)', 'Iron_(mg)', 'Magnesium_(mg)', 'Phosphorus_(mg)', 'Potassium_(mg)', 'Sodium_(mg)', 'Zinc_(mg)', 'Copper_(mg)', 'Manganese_(mg)', 'Selenium_(mcg)', 'Vit_C_(mg)', 'Thiamin_(mg)', 'Riboflavin_(mg)', 'Niacin_(mg)', 'Vit_B6_(mg)', 'Vit_B12_(mcg)', 'Vit_A_IU', 'Vit_A_RAE', 'Vit_E_(mg)', 'Vit_D_mcg', 'Vit_D_IU', 'Vit_K_(mcg)', 'FA_Sat_(g)', 'FA_Mono_(g)', 'FA_Poly_(g)', 'Cholestrl_(mg)']
__________
   Water_(g)  Protein_(g)  Lipid_Tot_(g)  Ash_(g)  Carbohydrt_(g)  \
0      15.87         0.85          81.11     2.11            0.06   
1      15.87         0.85          81.11     2.11            0.06   
2       0.24         0.28          99.48     0.00            0.00   
3      42.41        21.40          28.74     5.11            2.34   
4      41.11        23.24          29.68     3.18            2.79   

   Fiber_TD_(g)  Sugar_Tot_(g)  FA_Sat_(g)  FA_Mono_(g)  FA_Poly_(g)  
0           0.0           0.06      51.368       21.021        3.043  
1           0.0           0.06      50.489       23.426        3.012  
2           0.0           0.00      61.924       28.732        3.694  
3           0.0           0.50      18.669        7.778        0.800  
4           0.0           0.51      18.764        8.598        0.784  

12、升序排序

food_info.sort_values("Sodium_(mg)", inplace = True, ascending = True)
print(food_info["Sodium_(mg)"])

参数解释:
inplace:是否新生成一个DataFrame。
ascending:是否升序排序

OUT:

760     0.0
8607    0.0
629     0.0
631     0.0
6470    0.0
654     0.0
8599    0.0
657     0.0
633     0.0
635     0.0
637     0.0
638     0.0
639     0.0
646     0.0
653     0.0
632     0.0
606     0.0
6463    0.0
634     0.0
666     0.0
8387    0.0
611     0.0
434     0.0
655     0.0
661     0.0
3663    0.0
3664    0.0
3665    0.0
656     0.0
3697    0.0
       ... 
8153    NaN
8155    NaN
8156    NaN
8157    NaN
8158    NaN
8159    NaN
8160    NaN
8161    NaN
8163    NaN
8164    NaN
8165    NaN
8167    NaN
8169    NaN
8170    NaN
8172    NaN
8173    NaN
8174    NaN
8175    NaN
8176    NaN
8177    NaN
8178    NaN
8179    NaN
8180    NaN
8181    NaN
8183    NaN
8184    NaN
8185    NaN
8195    NaN
8251    NaN
8267    NaN
Name: Sodium_(mg), Length: 8618, dtype: float64

附上:
数据分析处理库Pandas-数据预处理
数据分析处理库Pandas-常用函数
数据分析处理库Pandas-Series结构

2018-11-21 21:10:34 u012037852 阅读数 337
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1908 人正在学习 去看看 覃秉丰
# encoding:utf-8
# pandas  主要的数据读取功能
#  

import pandas as pd
from pandas import DataFrame,Series
import numpy as np

df=pd.read_csv('data/ch06/ex1.csv') # 通过read_csv读取csv文件
pd.read_table('data/ch06/ex1.csv',sep=',') # 通过read_table读取csv文件
pd.read_csv('data/ch06/ex2.csv',header=None)  #使用默认的列名

#=======2.指定列名========
pd.read_csv('data/ch06/ex2.csv',names=['a','b','c','d','message'])  #使用指定列名

#=======3.指定索引,层次索引=======
pd.read_csv('data/ch06/ex2.csv',names=['a','b','c','d','message'],index_col='message') 
#将message作为行索引
pd.read_csv('data/ch06/csv_mindex.csv',index_col=['key1','key2'])   #将'key1','key2'作为层次索引

#=======4.分隔符数量不等,跳过某些行=======
pd.read_table('data/ch06/ex3.txt',seq='\s+') #针对数量不定的空白符分隔,使用“\s+” +表示1或多次,*表示0,1,多次,?表示0或1次
pd.read_csv('data/ch06/ex4.csv',skiprows=[0,2,3]) #跳过0,2,3行

#=======5.处理缺失值======
result=pd.read_csv('data/ch06/ex5.csv',na_value={'message':['foo','NA'],'something':['two']})

#=======6.批量读取======
result=pd.read_csv('data/ch06/ex6.csv',nrows=5)  #只读取前5行
#批量读取 统计数量
chunker=pd.read_csv('data/ch06/ex6.csv',chunksize=1000)
tot=Series([])
for piece in chunker:
    #print(piece['key'].value_counts())
    tot=tot.add(piece['key'].value_counts(),fill_value=0)
tot=tot.sort_values(ascending=False)
tot

#=======7.将数据写出到文本格式======
data=pd.read_csv("data/ch06/ex5.csv")
data.to_csv("data/ch06/out.csv",sep=",") #设置分隔符
import sys
data.to_csv(sys.stdout,na_rep="NULL")  #设置空值输出
data.to_csv(sys.stdout,index=False,header=False) #禁用行列标签输出
data.to_csv(sys.stdout,index=False,columns=['a','c','b']) #输出指定列
#Series 也有to_csv方法
dates=pd.date_range('1/1/2000',periods=7)  #生成时间序列索引
ts=Series(np.arange(7),index=dates)
ts.to_csv('data/ch06/tseries.csv')
Series.from_csv('data/ch06/tseries.csv',parse_dates=True) #读入时间序列数据

#=======8.json数据读取======
obj="""{
	"name": "Wes",
	"places_lived": ["United States", "Spain", "Germany"],
	"pet": null,
	"siblings": [{
		"name": "Scott",
		"age": 25,
		"pet": "Zuko"
	}, {
		"name": "Katie",
		"age": 33,
		"pet": "Cisco"
	}]
}"""
import json
result=json.loads(obj)
siblings=DataFrame(result["siblings"],columns=['name','age'])

#=======9.二进制数据读写======
frame=pd.read_csv("data/ch06/ex1.csv")
frame
frame.to_pickle('data/ch06/frame_pickle')
pd.read_pickle("data/ch06/frame_pickle")


#=======10.HDFS数据读写======
#写数据
dfs_store=pd.HDFStore("data/ch06/dfs_store2.h5")
dfs_store['obj1']=frame
dfs_store['obj1_col']=frame['a']
dfs_store.close()
#读数据
oHdfStore = pd.HDFStore("data/ch06/dfs_store2.h5", mode='r')
oHdfStore['obj1']

#=======11.数据库读写======
#1.创建数据库
import sqlite3
query="""Create Table test(a varchar(20),b varchar(20),c real,d integer);"""
con=sqlite3.connect(':memory:')
con.execute(query)
con.commit()
#2.写入数据
data=[('Atlanta','Georgia',1.25,6),('Tallnahassee','Florida',2.6,3),('Sacramento','California',1.7,5)]
stmt="insert into test values(?,?,?,?)"
con.executemany(stmt,data)
con.commit()
#3.查询数据
sql="select * from test"
cursor=con.execute(sql)
rows=cursor.fetchall()
rows
#4.查询数据到DataFrame
import pandas.io.sql as sql
df=sql.read_sql_query('select * from test',con)

 

 

2019-10-11 11:57:46 suiyueruge1314 阅读数 28
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1908 人正在学习 去看看 覃秉丰
import re
from pathlib import Path
import pandas as pd


here = Path('/home/zero/桌面/xxxx')

for filename in here.rglob('*.xlsx'):
    print(filename)
    x = pd.ExcelFile(filename)
    print(x.sheet_names)    # 表格列表sheet名
    df = x.parse('表格1')
    # 获取列名
    # print(df.columns)
    # 获取指定列
    # print(df['修改前韵律'])
    # print(df['修改后韵律'])

    # 多列数据处理
    for line_before,line_corrected in zip(df['xxx'],df['xxx']):
        print(line_before)
        print(line_corrected)

# coding:utf-8
import pandas as pd

data = pd.read_excel('example.xlsx', sheet_name='Sheet1')
print data

关于有关pandas更详细的使用,可参照:
https://www.jianshu.com/p/4ff1d2b23ab3
https://blog.csdn.net/qq_34377830/article/details/81872568
https://blog.csdn.net/tongxinzhazha/article/details/78796952

没有更多推荐了,返回首页