Getting this error while binning for plot: TypeError: '<' not supported between instances of 'int' and 'str' - bins

bins=[-30, 0, 30, 60, 90, 120]
group_names =["-30 to 0", "0 to 30", "30 to 60", "60 to 90", "Over 100"]
AccidentData_2021["Temperature(F)"]=pd.cut(AccidentData_2021["Temperature(F)"], bins, labels=group_names)
AccidentData_2021
Expecting bar plot

bins=[-30, 0, 30, 60, 90, 120]
group_names =["-30 to 0", "0 to 30", "30 to 60", "60 to 90", "Over 100"]
AccidentData_2021["Temperature(F)"]=pd.cut(AccidentData_2021["Temperature(F)"], bins=bins, labels=group_names)
AccidentData_2021

Related

How do I determine the column type name from the columnType integer value in mysql2?

When querying with mysql2, the third argument to the callback function fields has the following documentation:
console.log(fields); // fields contains extra meta data about results, if available
Ok, great. But when I look at the values in the fields array, I see the following:
[
{
"_buf":{},
"_clientEncoding":"utf8",
"_catalogLength":3,
"_catalogStart":10,
"_schemaLength":0,
"_schemaStart":14,
"_tableLength":11,
"_tableStart":15,
"_orgTableLength":0,
"_orgTableStart":27,
"_orgNameLength":2,
"_orgNameStart":31,
"characterSet":63,
"encoding":"binary",
"name":"id",
"columnLength":11,
"columnType":3, // <-- column type 3? This is an INTEGER field
"flags":1,
"decimals":0
},
{
...
"columnType":253, // <-- column type 253? This is a VARCHAR field
...
}
]
How do I determine what the actual column type is from these integer values?
After doing some more digging, I was able to find the answer by looking at the source. mysql2 exposes a Types field that has the column type names as keys with the column id as values.
At the time of posting, that list looks like this:
{
"DECIMAL": 0,
"TINY": 1,
"SHORT": 2,
"LONG": 3,
"FLOAT": 4,
"DOUBLE": 5,
"NULL": 6,
"TIMESTAMP": 7,
"LONGLONG": 8,
"INT24": 9,
"DATE": 10,
"TIME": 11,
"DATETIME": 12,
"YEAR": 13,
"NEWDATE": 14,
"VARCHAR": 15,
"BIT": 16,
"JSON": 245,
"NEWDECIMAL": 246,
"ENUM": 247,
"SET": 248,
"TINY_BLOB": 249,
"MEDIUM_BLOB": 250,
"LONG_BLOB": 251,
"BLOB": 252,
"VAR_STRING": 253,
"STRING": 254,
"GEOMETRY": 255
}

How can I get only the JSON keys without using tilde sign?

I am trying to get (via JSON Path) only key values from the JSON below but with no success.
I cannot use the tilde sign (~) because JMeter's JSON Path Extractor works under JSON PATH 4.0 and ~ is not recognized.
{
"facetCount": {
"designer": {
"4856430": 2,
"7313551": 14,
"7018102": 8,
"306838": 1,
"85146": 146,
"2654979": 11,
"221111": 4,
"180510": 40,
"3344622": 59,
"472718": 73,
"107993": 19,
"166170": 58,
"6908": 2,
"426629": 1,
"1358858": 9,
"9879178": 6,
"55006": 43,
"285396": 2,
"3355": 9,
"215501": 8,
"4968477": 4,
"11349629": 7,
"11229643": 27,
"11355128": 9,
"7093068": 3,
"11098281": 2,
"5833751": 1,
"4741301": 1,
"9198104": 21,
"991324": 4
},
"attributes": {
"135979:77": 290,
"135979:83": 27,
"136227:20": 141,
"136227:78": 670,
"135985:44": 123,
"135985:43": 669,
"135979:62": 700,
"135979:61": 1188,
"136644:176": 2,
"136331:7": 1,
"136331:8": 3,
"136641:190": 13,
"136641:191": 12,
"136061:144": 3
},
"category": {
"136103": 208,
"136105": 147,
"137322": 2,
"136389": 120,
"136215": 236,
"136214": 954,
"136216": 217,
"136217": 352,
"136218": 452,
"136219": 40,
"136480": 4,
"136220": 111,
"136221": 288,
"136222": 58,
"136223": 369,
"136224": 163,
"136986": 3,
"136307": 1125,
"136059": 10,
"136308": 956,
"136315": 984,
"136003": 574,
"136045": 267,
"136035": 1501,
"135985": 1380,
"137134": 27,
"136309": 60,
"137323": 9,
"136390": 1,
"136021": 16,
"136322": 1951,
"137166": 16,
"137317": 7,
"136005": 4,
"135983": 4019,
"136033": 1513,
"136310": 1224,
"136392": 18,
"135981": 2430,
"136031": 16,
"136326": 1312,
"136061": 79
},
"colour": {
"1": 41686,
"7": 14593,
"5": 9596,
"18": 1,
"13": 5185,
"6": 5259,
"3": 6391,
"11": 5715,
"12": 1537,
"4": 8767,
"16": 1466,
"9": 8590,
"15": 1730,
"8": 8333,
"14": 3208,
"2": 13269,
"10": 2730
},
"ninetyminutes": {
"3": 309
},
"sameday": {
"3": 1714,
"42": 254
},
"size": {
"135972:1620": 523,
"136657:2650": 1,
"136657:2850": 1
},
"location": {
"3": 2674,
"4": 7671,
"5": 35808,
"6": 2761,
"7": 11948
},
"labels": {
"1300": 2969
}
}
}
I would like to get the keys that are under facetCount element (designers, attributes, colour, etc.) and also (another JSON Path expression) get the keys that are inside these keys, such as 4856430 from designers, 135979:77 from attributes, and so on.
Could you help me, please?
Thanks in advance!
You can use JSR223 PostProcessor to get key in object JSON
new groovy.json.JsonSlurper().parse(prev.getResponseData()).facetCount.eachWithIndex{ def node, int idx ->
log.info('Key ' + idx + '=' + node.getKey())
vars.put('key_' + idx, node.getKey())
}
And you can get key with a variable like that:
${key_0}, ${key_1}, ...
More detail check here How to extract values from json in jmeter when the keys are unkown?
JMeter's JSON test elements rely on Jayway Jsonpath which doesn't has this tilde operator for querying the keys, you will have to go for:
JSR223 PostProcessor
Groovy language
JsonSlurper
Add JSR223 PostProcessor as a child of the request which returns the above JSON and use the following code:
For direct keys (designer, attributes, etc)
def counter = 1
new groovy.json.JsonSlurper().parse(prev.getResponseData()).facetCount.each { facet ->
vars.put('key_' + counter, facet.key)
counter++
}
vars.put('key_matchNr', counter - 1 as String)
For child keys (4856430, 135979:77, etc)
def counter = 1
new groovy.json.JsonSlurper().parse(prev.getResponseData()).facetCount.each { child ->
child.value.keySet().each { key ->
vars.put('childKey_' + counter, key)
counter++
}
}
vars.put('childKey_matchNr', counter -1 as String)
More information: Groovy - Parsing and producing JSON

convert a json 2 dimensional array into a table

I am having hard time to find how to convert a 2D array (acuired through JSON format) into a table...
My JSON:
[
["index", 1, 2, 3, 4, 5, 6, 7, 8, 9],
["type", "years", "years", "years", "quarters", "quarters", "quarters", "months", "months", "months"],
["period", "2016", "2017", "2018", "Q2", "Q3", "Q4", "Dec", "Jan", "Feb"],
["nb_month", 12, 12, 12, 3, 3, 3, 1, 1, 1],
["MY_scrap", 0, 54, 1529, 325, 445, 532, 120, 193, 131],
["MY_completed", 6, 89, 2895, 394, 722, 1622, 437, 805, 542],
["SV_total", 6, 1806, 36520, 6143, 11772, 15318, 3579, 6407, 5216],
["SV_scrap", 0, 54, 1529, 325, 445, 532, 120, 193, 131],
["SV_other", 6, 1752, 34809, 5808, 11198, 14773, 3449, 6214, 5081],
["WIP", 0, 971, 3214, 1493, 2395, 3214, 3214, 3832, 4445],
["WLS", 0, 178, 650, 390, 475, 650, 650, 709, 902]
]
Each line on the JSON is a column in the table and the 1st "row" in the JSON is the table header.
I start to play around with power query and finally get a beginning of code:
let
Source = Json.Document(Web.Contents("http://localhost/api/test")),
trans1 = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Transposed Table" = Table.Transpose(trans1)
in
#"Transposed Table"
The result is here:
But from here I do not understand how to manage a proper list expand...
Thank you for your help!
There's a M Function that is going to be very useful to you, I belive. Table.FromColumns(lists as list)
let
Source = Json.Document(Web.Contents("http://localhost/api/test")),
TableResult = Table.FromColumns(Source),
#"Promoted Headers" = Table.PromoteHeaders(TableResult, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"index", Int64.Type}, {"type", type text}, {"period", type text}, {"nb_month", Int64.Type}, {"MY_scrap", Int64.Type}, {"MY_completed", Int64.Type}, {"SV_total", Int64.Type}, {"SV_scrap", Int64.Type}, {"SV_other", Int64.Type}, {"WIP", Int64.Type}, {"WLS", Int64.Type}})
in
#"Changed Type"
I think this does exactly what you want.

How can set "wait time" in CZML?

I have some position & time values describing movement of some vehicle. But in some time intervals vehicle wait in some position. I cant figure out how can i set waiting time.?
In the example data provided below : position values corresponding to 40 and 50 are same = (4, 4 ,0) That means vehicle wait 10 second in that position. But it doesn't work because of interpolation.
Ex :
"position":{
"interpolationAlgorithm":"LAGRANGE",
"interpolationDegree":1,
"epoch":"2012-08-04T16:00:00Z",
"cartesian": [
0.0, 0, 0, 0,
10.0, 1 ,1 ,0,
20.0, 2, 2, 0,
30.0, 3, 3, 0,
40.0, 4, 4, 0,
50.0, 4, 4, 0
]
}
After some research I found that we can use "interval" property. Such that :
"position" : [
{
"interval": "2018-08-07T23:50:00Z/2018-08-08T00:09:00Z",
"cartographicDegrees" : [
"2018-08-07T23:50:00Z", 39.8495,43.3802,0,
"2018-08-08T00:00:00Z", 39.8734,43.4129,0,
"2018-08-08T00:09:00Z", 39.8048,43.4324,0
],
"interpolationAlgorithm": "LAGRANGE",
"interpolationDegree": 5
},
{
"interval": "2018-08-08T00:09:00Z/2018-08-08T00:11:00Z",
"cartographicDegrees" : [39.8048,43.4324,0]
},
...

Parse LocalDate json to moment in Angular

I'm receiving LocalDate from backend in JSON witch looks like
{"dayOfMonth":25,
"dayOfWeek":"TUESDAY",
"dayOfYear":206,
"month":"JULY",
"monthValue":7,
"year":2017,
"hour":0,
"minute":0,
"nano":0,
"second":0,
"chronology":{"id":"ISO","calendarType":"iso8601"}}}
and I want to parse it to a moment js object
moment(this.car.overview).format();
Invalid date
console.log(moment().format(car.overview));
ERROR TypeError: format.replace is not a function
Anyone knows how to get a valid moment object from this JSON ?
You mean this?
PS: If you receive a JSON string you need to JSON.parse it first
var overview = {
"dayOfMonth": 25,
"dayOfWeek": "TUESDAY",
"dayOfYear": 206,
"month": "JULY",
"monthValue": 7,
"year": 2017,
"hour": 0,
"minute": 0,
"nano": 0,
"second": 0,
"chronology": {
"id": "ISO",
"calendarType": "iso8601"
}
}
console.log(
moment({
y: overview.year,
M: overview.monthValue - 1,
d: overview.dayOfMonth,
h: overview.hour,
m: overview.minute,
s: overview.second,
ms: overview.nano
})
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
what you need to do is
moment().minute(this.car.minute.overview.minute).second(this.car.minute.overview.second).hours(this.car.minute.overview.hour)
and so on for information read https://momentjs.com/docs/#/get-set/