佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > Pandas數(shù)據(jù)分析的一些常用小技巧

Pandas數(shù)據(jù)分析的一些常用小技巧

熱門標(biāo)簽:電話運(yùn)營中心 百度AI接口 Win7旗艦版 語音系統(tǒng) 企業(yè)做大做強(qiáng) 客戶服務(wù) 硅谷的囚徒呼叫中心 呼叫中心市場需求

Pandas小技巧

import pandas as pd

pandas生成數(shù)據(jù)

d = {"sex": ["male", "female", "male", "female"],
 "color": ["red", "green", "blue", "yellow"],
 "age": [12, 56, 21, 31]}
df = pd.DataFrame(d)
df

sex color age
0 male red 12
1 female green 56
2 male blue 21
3 female yellow 31

數(shù)據(jù)替換–map映射

map() 會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射。

map(function, iterable, …)

  • function – 函數(shù)
  • iterable – 一個(gè)或多個(gè)序列
d = {"male": 1, "female": 0}
df["gender"] = df["sex"].map(d)
df

sex color age gender
0 male red 12 1
1 female green 56 0
2 male blue 21 1
3 female yellow 31 0

數(shù)據(jù)清洗–replace和正則

分享pandas數(shù)據(jù)清洗技巧,在某列山使用replace和正則快速完成值的清洗

d = {"customer": ["A", "B", "C", "D"],
 "sales": [1000, "950.5RMB", "$400", "$1250.75"]}
df = pd.DataFrame(d)
df

customer sales
0 A 1000
1 B 950.5RMB
2 C $400
3 D $1250.75

sales列的數(shù)據(jù)類型不同意,為后續(xù)分析,所以需要將他的格式同統(tǒng)一

df["sales"] = df["sales"].replace("[$,RMB]", "", regex=True).astype("float")
df

customer sales
0 A 1000.00
1 B 950.50
2 C 400.00
3 D 1250.75

查看數(shù)據(jù)類型

df["sales"].apply(type)

0    class 'float'>
1    class 'float'>
2    class 'float'>
3    class 'float'>
Name: sales, dtype: object

數(shù)據(jù)透視表分析–melt函數(shù)

melt是逆轉(zhuǎn)操作函數(shù),可以將列名轉(zhuǎn)換為列數(shù)據(jù)(columns name → column values),重構(gòu)DataFrame,用法如下:

參數(shù)說明:

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name=‘value', col_level=None)

  • frame:要處理的數(shù)據(jù)集。
  • id_vars:不需要被轉(zhuǎn)換的列名。
  • value_vars:需要轉(zhuǎn)換的列名,如果剩下的列全部都要轉(zhuǎn)換,就不用寫了。
  • var_name和value_name是自定義設(shè)置對(duì)應(yīng)的列名。
  • col_level :如果列是MultiIndex,則使用此級(jí)別。

二維表格轉(zhuǎn)成一維表格

d = {"district_code": [12345, 56789, 101112, 131415],
 "apple": [5.2, 2.4, 4.2, 3.6],
 "banana": [3.5, 1.9, 4.0, 2.3],
 "orange": [8.0, 7.5, 6.4, 3.9]
 }
df = pd.DataFrame(d)
df

district_code apple banana orange
0 12345 5.2 3.5 8.0
1 56789 2.4 1.9 7.5
2 101112 4.2 4.0 6.4
3 131415 3.6 2.3 3.9

df = df.melt(id_vars="district_code",
  var_name="fruit_name",
  value_name="price")
df

district_code fruit_name price
0 12345 apple 5.2
1 56789 apple 2.4
2 101112 apple 4.2
3 131415 apple 3.6
4 12345 banana 3.5
5 56789 banana 1.9
6 101112 banana 4.0
7 131415 banana 2.3
8 12345 orange 8.0
9 56789 orange 7.5
10 101112 orange 6.4
11 131415 orange 3.9

將分類中出現(xiàn)次數(shù)較少的值歸為others

d = {"name": ['Jone', 'Alica', 'Emily', 'Robert', 'Tomas',
  'Zhang', 'Liu', 'Wang', 'Jack', 'Wsx', 'Guo'],
 "categories": ["A", "C", "A", "D", "A",
   "B", "B", "C", "A", "E", "F"]}
df = pd.DataFrame(d)
df

name categories
0 Jone A
1 Alica C
2 Emily A
3 Robert D
4 Tomas A
5 Zhang B
6 Liu B
7 Wang C
8 Jack A
9 Wsx E
10 Guo F

D、E、F 僅在分類中出現(xiàn)一次,A 出現(xiàn)次數(shù)較多。

統(tǒng)計(jì)出現(xiàn)次數(shù),并標(biāo)準(zhǔn)化

frequencies = df["categories"].value_counts(normalize=True)
frequencies

A    0.363636
B    0.181818
C    0.181818
E    0.090909
D    0.090909
F    0.090909
Name: categories, dtype: float64

設(shè)定閾值

threshold = 0.1
small_categories = frequencies[frequencies  threshold].index
small_categories
Index(['E', 'D', 'F'], dtype='object')

替換

df["categories"] = df["categories"].replace(small_categories, "Others")
df

name categories
0 Jone A
1 Alica C
2 Emily A
3 Robert Others
4 Tomas A
5 Zhang B
6 Liu B
7 Wang C
8 Jack A
9 Wsx Others
10 Guo Others

Python小技巧

列表推導(dǎo)式

例如,假設(shè)我們想創(chuàng)建一個(gè)正方形列表,例如

squares = []
for x in range(10):
 squares.append(x**2)
squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

squares = list(map(lambda x: x**2, range(10)))
squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

squares = [x**2 for x in range(10)]
squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

同時(shí)還可以利用if來過濾列表

[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

列表推導(dǎo)式可以包含復(fù)雜表達(dá)式和嵌套函數(shù)

from math import pi
[str(round(pi, i)) for i in range(1, 6)]

['3.1', '3.14', '3.142', '3.1416', '3.14159']

列表推導(dǎo)式中的初始表達(dá)式可以是任意表達(dá)式,包括另一個(gè)列表推導(dǎo)式。

下面的列表推導(dǎo)式將對(duì)行和列進(jìn)行轉(zhuǎn)置

matrix = [
 [1, 2, 3, 4],
 [5, 6, 7, 8],
 [9, 10, 11, 12],
]
[[row[i] for row in matrix] for i in range(4)]

[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

交換變量

a = 1
b = 2
a, b = b, a
print("a = ",a)
print("b = ",b)

a =  2
b =  1

檢查對(duì)象使用內(nèi)存情況

sys.getsizeof()

range()函數(shù)返回的是一個(gè)類,在使用內(nèi)存方面,range遠(yuǎn)比實(shí)際的數(shù)字列表更加高效

import sys
mylist = range(1,10000)
print(sys.getsizeof(mylist))

48

合并字典

從Python3.5開始,合并字典的操作更加簡單

如果key重復(fù),那么第一個(gè)字典的key會(huì)被覆蓋

d1 ={"a":1,"b":2}
d2 = {"b":2,"c":4}
m = {**d1,**d2}
print(m)

{'a': 1, 'b': 2, 'c': 4}

字符串分割成列表

string = "the author is beishanla"
s = string.split(" ")
s

['the', 'author', 'is', 'beishanla']

字符串列表創(chuàng)建字符串

l = ["the","author","is","beishanla"]
l = " ".join(l)
l

'the author is beishanla'

Python查看圖片

pip install Pillow
from PIL import Image
im = Image.open("E:/Python/00網(wǎng)絡(luò)爬蟲/Project/詞云圖跳舞視頻/aip-python-sdk-4.15.1/pictures/img_88.jpg")
im.show()
print(im.format,im.size,im.mode)

JPEG (1920, 1080) RGB

歡迎搜藏,持續(xù)更新

總結(jié)

到此這篇關(guān)于Pandas數(shù)據(jù)分析的一些常用小技巧的文章就介紹到這了,更多相關(guān)Pandas數(shù)據(jù)分析技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python之pandas用法大全
  • Python pandas用法最全整理
  • Python Pandas常用函數(shù)方法總結(jié)
  • Python遍歷pandas數(shù)據(jù)方法總結(jié)
  • Python pandas常用函數(shù)詳解
  • Python使用Pandas庫常見操作詳解
  • pandas提升計(jì)算效率的一些方法匯總
  • 11個(gè)Python Pandas小技巧讓你的工作更高效(附代碼實(shí)例)
  • 詳解pandas獲取Dataframe元素值的幾種方法
  • python數(shù)據(jù)分析必會(huì)的Pandas技巧匯總

標(biāo)簽:海南 長沙 崇左 山西 濟(jì)南 安康 喀什 山西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Pandas數(shù)據(jù)分析的一些常用小技巧》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    澄江县| 青铜峡市| 临沭县| 巴中市| 玉树县| 长泰县| 陈巴尔虎旗| 新宾| 泰兴市| 南华县| 德化县| 沙坪坝区| 丰台区| 靖江市| 安乡县| 咸阳市| 肇州县| 万载县| 江北区| 宜君县| 札达县| 兰州市| 溆浦县| 黎川县| 赣州市| 澜沧| 安仁县| 清流县| 赤城县| 广河县| 开封市| 泰来县| 收藏| 治多县| 泰顺县| 奇台县| 淳安县| 简阳市| 泽普县| 石柱| 城固县|